protected override void DoAfterWriter(TaskScheduler es) { double minReopenSec = 0.01 + 0.05 * Random.NextDouble(); double maxReopenSec = minReopenSec * (1.0 + 10 * Random.NextDouble()); if (Verbose) { Console.WriteLine("TEST: make SearcherManager maxReopenSec=" + maxReopenSec + " minReopenSec=" + minReopenSec); } genWriter = new TrackingIndexWriter(m_writer); SearcherFactory sf = new SearcherFactoryAnonymousClass(this, es); nrtNoDeletes = new SearcherManager(m_writer, false, sf); nrtDeletes = new SearcherManager(m_writer, true, sf); nrtDeletesThread = new ControlledRealTimeReopenThread <IndexSearcher>(genWriter, nrtDeletes, maxReopenSec, minReopenSec); nrtDeletesThread.Name = "NRTDeletes Reopen Thread"; #if FEATURE_THREAD_PRIORITY nrtDeletesThread.Priority = (ThreadPriority)Math.Min((int)Thread.CurrentThread.Priority + 2, (int)ThreadPriority.Highest); #endif nrtDeletesThread.IsBackground = (true); nrtDeletesThread.Start(); nrtNoDeletesThread = new ControlledRealTimeReopenThread <IndexSearcher>(genWriter, nrtNoDeletes, maxReopenSec, minReopenSec); nrtNoDeletesThread.Name = "NRTNoDeletes Reopen Thread"; #if FEATURE_THREAD_PRIORITY nrtNoDeletesThread.Priority = (ThreadPriority)Math.Min((int)Thread.CurrentThread.Priority + 2, (int)ThreadPriority.Highest); #endif nrtNoDeletesThread.IsBackground = (true); nrtNoDeletesThread.Start(); }
protected override void DoAfterWriter(TaskScheduler es) { SearcherFactory factory = new SearcherFactoryAnonymousClass(this, es); if (Random.NextBoolean()) { // TODO: can we randomize the applyAllDeletes? But // somehow for final searcher we must apply // deletes... mgr = new SearcherManager(m_writer, true, factory); isNRT = true; } else { // SearcherManager needs to see empty commit: m_writer.Commit(); mgr = new SearcherManager(m_dir, factory); isNRT = false; m_assertMergedSegmentsWarmed = false; } lifetimeMGR = new SearcherLifetimeManager(); }