Exemple #1
0
            // 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);
                }
            }
Exemple #2
0
 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);
 }
Exemple #3
0
 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);
 }