public override void Sniff(IConnection connection, bool fromStartupHint = false) { if (fromStartupHint && _seenStartup) return; try { int seed; bool shouldPingHint; var uri = this.GetNext(null, out seed, out shouldPingHint); this._readerWriter.EnterWriteLock(); var nodes = connection.Sniff(uri); if (!nodes.HasAny()) return; this._nodeUris = nodes; this._uriLookup = nodes.ToDictionary(k => k, v => new EndpointState()); if (fromStartupHint) this._seenStartup = true; } finally { this._readerWriter.ExitWriteLock(); } }