// Reopen local reader public void Reopen() { IndexSearcher before = Mgr.Acquire(); Mgr.Release(before); Mgr.MaybeRefresh(); IndexSearcher after = Mgr.Acquire(); try { if (after != before) { // New searcher was opened long version = Searchers.Record(after); Searchers.Prune(new SearcherLifetimeManager.PruneByAge(outerInstance.maxSearcherAgeSeconds)); outerInstance.BroadcastNodeReopen(MyNodeID, version, after); } } finally { Mgr.Release(after); } }
public void UpdateNodeVersion(int nodeID, long version) { currentNodeVersions[nodeID] = version; if (currentShardSearcher != null) { currentShardSearcher.IndexReader.DecRef(); } currentShardSearcher = new ShardIndexSearcher(this, GetCurrentNodeVersions(), Mgr.Acquire().IndexReader, MyNodeID); }
public void InitSearcher(long[] nodeVersions) { if (Debugging.AssertsEnabled) { Debugging.Assert(currentShardSearcher is null); } Array.Copy(nodeVersions, 0, currentNodeVersions, 0, currentNodeVersions.Length); currentShardSearcher = new ShardIndexSearcher(this, GetCurrentNodeVersions(), Mgr.Acquire().IndexReader, MyNodeID); }