SWEEP: Changed ConcurrentMergeSchedulers class to 
ConcurrentMergeSchedulerFactories (Value an array of 
Func<IConcurrentMergeScheduler>). In TestTransactions, the merge schedulers are 
supposed to be created on another thread and creating them too early was 
causing the test to fail.


Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/99a4b35d
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/99a4b35d
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/99a4b35d

Branch: refs/heads/api-work
Commit: 99a4b35d2e2ad7ba67af44e179770845d1460cf4
Parents: 9ada11a
Author: Shad Storhaug <[email protected]>
Authored: Sat Mar 4 13:56:30 2017 +0700
Committer: Shad Storhaug <[email protected]>
Committed: Sun Mar 5 17:08:43 2017 +0700

----------------------------------------------------------------------
 .../Util/LuceneTestCase.cs                      | 12 +--
 .../Index/Test2BBinaryDocValues.cs              |  8 +-
 .../Index/Test2BNumericDocValues.cs             |  4 +-
 src/Lucene.Net.Tests/Index/Test2BPositions.cs   |  4 +-
 src/Lucene.Net.Tests/Index/Test2BPostings.cs    |  4 +-
 .../Index/Test2BPostingsBytes.cs                |  7 +-
 .../Index/Test2BSortedDocValues.cs              |  8 +-
 src/Lucene.Net.Tests/Index/Test2BTerms.cs       |  4 +-
 .../Index/Test4GBStoredFields.cs                |  4 +-
 src/Lucene.Net.Tests/Index/TestCrash.cs         | 42 +++++-----
 src/Lucene.Net.Tests/Index/TestIndexWriter.cs   |  4 +-
 .../Index/TestIndexWriterDelete.cs              | 28 ++++---
 .../Index/TestIndexWriterExceptions.cs          | 53 ++++++++-----
 .../Index/TestIndexWriterForceMerge.cs          |  4 +-
 .../Index/TestIndexWriterMergePolicy.cs         |  7 +-
 .../Index/TestIndexWriterOnDiskFull.cs          |  4 +-
 .../Index/TestIndexWriterReader.cs              |  8 +-
 .../Index/TestIndexWriterWithThreads.cs         | 83 ++++++++++++--------
 .../Index/TestStressIndexing.cs                 |  4 +-
 src/Lucene.Net.Tests/Index/TestTransactions.cs  | 63 +++++++--------
 .../Search/TestSearcherManager.cs               |  4 +-
 21 files changed, 205 insertions(+), 154 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs 
b/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
index bb93c12..ea824aa 100644
--- a/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
+++ b/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
@@ -2846,17 +2846,19 @@ namespace Lucene.Net.Util
         }
 
         /// <summary>
-        /// Contains a list of all the IConcurrentMergeSchedulers to be tested.
+        /// Contains a list of all the Func&lt;IConcurrentMergeSchedulers&gt; 
to be tested.
+        /// Delegate method allows them to be created on their target thread 
instead of the test thread
+        /// and also ensures a separate instance is created in each case 
(which can affect the result of the test).
         /// 
         /// LUCENENET specific
         /// </summary>
-        public static class ConcurrentMergeSchedulers
+        public static class ConcurrentMergeSchedulerFactories
         {
-            public static readonly IConcurrentMergeScheduler[] Values = new 
IConcurrentMergeScheduler[] {
+            public static readonly Func<IConcurrentMergeScheduler>[] Values = 
new Func<IConcurrentMergeScheduler>[] {
 #if !NETSTANDARD
-                new ConcurrentMergeScheduler(),
+                () => new ConcurrentMergeScheduler(),
 #endif
-                new TaskMergeScheduler()
+                () => new TaskMergeScheduler()
             };
         }
     }

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Index/Test2BBinaryDocValues.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Index/Test2BBinaryDocValues.cs 
b/src/Lucene.Net.Tests/Index/Test2BBinaryDocValues.cs
index e7bc021..5281e27 100644
--- a/src/Lucene.Net.Tests/Index/Test2BBinaryDocValues.cs
+++ b/src/Lucene.Net.Tests/Index/Test2BBinaryDocValues.cs
@@ -38,7 +38,7 @@ namespace Lucene.Net.Index
     {
         // indexes Integer.MAX_VALUE docs with a fixed binary field
         [Test]
-        public virtual void 
TestFixedBinary([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestFixedBinary([ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             BaseDirectoryWrapper dir = 
NewFSDirectory(CreateTempDir("2BFixedBinary"));
             if (dir is MockDirectoryWrapper)
@@ -48,7 +48,7 @@ namespace Lucene.Net.Index
             var config = new IndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random()))
                             
.SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
                             .SetRAMBufferSizeMB(256.0)
-                            .SetMergeScheduler(scheduler)
+                            .SetMergeScheduler(newScheduler())
                             .SetMergePolicy(NewLogMergePolicy(false, 10))
                             .SetOpenMode(OpenMode.CREATE);
             IndexWriter w = new IndexWriter(dir, config);
@@ -104,7 +104,7 @@ namespace Lucene.Net.Index
 
         // indexes Integer.MAX_VALUE docs with a variable binary field
         [Test]
-        public virtual void 
TestVariableBinary([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestVariableBinary([ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             BaseDirectoryWrapper dir = 
NewFSDirectory(CreateTempDir("2BVariableBinary"));
             if (dir is MockDirectoryWrapper)
@@ -115,7 +115,7 @@ namespace Lucene.Net.Index
             var config = new IndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random()))
                             
.SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
                             .SetRAMBufferSizeMB(256.0)
-                            .SetMergeScheduler(scheduler)
+                            .SetMergeScheduler(newScheduler())
                             .SetMergePolicy(NewLogMergePolicy(false, 10))
                             .SetOpenMode(OpenMode.CREATE);
             IndexWriter w = new IndexWriter(dir, config);

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Index/Test2BNumericDocValues.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Index/Test2BNumericDocValues.cs 
b/src/Lucene.Net.Tests/Index/Test2BNumericDocValues.cs
index 7c37423..ce0ec72 100644
--- a/src/Lucene.Net.Tests/Index/Test2BNumericDocValues.cs
+++ b/src/Lucene.Net.Tests/Index/Test2BNumericDocValues.cs
@@ -37,7 +37,7 @@ namespace Lucene.Net.Index
     {
         // indexes Integer.MAX_VALUE docs with an increasing dv field
         [Test, LongRunningTest]
-        public virtual void 
TestNumerics([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestNumerics([ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             BaseDirectoryWrapper dir = 
NewFSDirectory(CreateTempDir("2BNumerics"));
             if (dir is MockDirectoryWrapper)
@@ -46,7 +46,7 @@ namespace Lucene.Net.Index
             }
 
             IndexWriter w = new IndexWriter(dir, new 
IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
-           
.SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetRAMBufferSizeMB(256.0).SetMergeScheduler(scheduler).SetMergePolicy(NewLogMergePolicy(false,
 10)).SetOpenMode(OpenMode.CREATE));
+           
.SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetRAMBufferSizeMB(256.0).SetMergeScheduler(newScheduler()).SetMergePolicy(NewLogMergePolicy(false,
 10)).SetOpenMode(OpenMode.CREATE));
 
             Document doc = new Document();
             NumericDocValuesField dvField = new NumericDocValuesField("dv", 0);

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Index/Test2BPositions.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Index/Test2BPositions.cs 
b/src/Lucene.Net.Tests/Index/Test2BPositions.cs
index d004779..d8a5e45 100644
--- a/src/Lucene.Net.Tests/Index/Test2BPositions.cs
+++ b/src/Lucene.Net.Tests/Index/Test2BPositions.cs
@@ -50,7 +50,7 @@ namespace Lucene.Net.Index
     {
         [Ignore("Very slow. Enable manually by removing Ignore.")]
         [Test]
-        public virtual void 
Test([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
Test([ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             BaseDirectoryWrapper dir = 
NewFSDirectory(CreateTempDir("2BPositions"));
             if (dir is MockDirectoryWrapper)
@@ -59,7 +59,7 @@ namespace Lucene.Net.Index
             }
 
             IndexWriter w = new IndexWriter(dir, new 
IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
-           
.SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetRAMBufferSizeMB(256.0).SetMergeScheduler(scheduler).SetMergePolicy(NewLogMergePolicy(false,
 10)).SetOpenMode(OpenMode.CREATE));
+           
.SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetRAMBufferSizeMB(256.0).SetMergeScheduler(newScheduler()).SetMergePolicy(NewLogMergePolicy(false,
 10)).SetOpenMode(OpenMode.CREATE));
 
             MergePolicy mp = w.Config.MergePolicy;
             if (mp is LogByteSizeMergePolicy)

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Index/Test2BPostings.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Index/Test2BPostings.cs 
b/src/Lucene.Net.Tests/Index/Test2BPostings.cs
index 2b79afd..57b6dec 100644
--- a/src/Lucene.Net.Tests/Index/Test2BPostings.cs
+++ b/src/Lucene.Net.Tests/Index/Test2BPostings.cs
@@ -49,7 +49,7 @@ namespace Lucene.Net.Index
         [Timeout(int.MaxValue)]
 #endif
         [Test, LongRunningTest, HasTimeout]
-        public virtual void 
Test([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
Test([ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             BaseDirectoryWrapper dir = 
NewFSDirectory(CreateTempDir("2BPostings"));
             if (dir is MockDirectoryWrapper)
@@ -60,7 +60,7 @@ namespace Lucene.Net.Index
             var config = new IndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random()))
                             
.SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
                             .SetRAMBufferSizeMB(256.0)
-                            .SetMergeScheduler(scheduler)
+                            .SetMergeScheduler(newScheduler())
                             .SetMergePolicy(NewLogMergePolicy(false, 10))
                             .SetOpenMode(OpenMode.CREATE);
 

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Index/Test2BPostingsBytes.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Index/Test2BPostingsBytes.cs 
b/src/Lucene.Net.Tests/Index/Test2BPostingsBytes.cs
index 42f9329..4278261 100644
--- a/src/Lucene.Net.Tests/Index/Test2BPostingsBytes.cs
+++ b/src/Lucene.Net.Tests/Index/Test2BPostingsBytes.cs
@@ -1,10 +1,11 @@
 using Lucene.Net.Analysis.TokenAttributes;
 using Lucene.Net.Documents;
+using Lucene.Net.Support;
 using NUnit.Framework;
+using System;
 
 namespace Lucene.Net.Index
 {
-    using Lucene.Net.Support;
     using BaseDirectoryWrapper = Lucene.Net.Store.BaseDirectoryWrapper;
     using CharTermAttribute = 
Lucene.Net.Analysis.TokenAttributes.CharTermAttribute;
     using Document = Documents.Document;
@@ -52,7 +53,7 @@ namespace Lucene.Net.Index
     {
         [Ignore("Very slow. Enable manually by removing Ignore.")]
         [Test]
-        public virtual void 
Test([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
Test([ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             BaseDirectoryWrapper dir = 
NewFSDirectory(CreateTempDir("2BPostingsBytes1"));
             if (dir is MockDirectoryWrapper)
@@ -63,7 +64,7 @@ namespace Lucene.Net.Index
             var config = new IndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random()))
                             
.SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
                             .SetRAMBufferSizeMB(256.0)
-                            .SetMergeScheduler(scheduler)
+                            .SetMergeScheduler(newScheduler())
                             .SetMergePolicy(NewLogMergePolicy(false, 10))
                             .SetOpenMode(OpenMode.CREATE);
             IndexWriter w = new IndexWriter(dir, config);

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Index/Test2BSortedDocValues.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Index/Test2BSortedDocValues.cs 
b/src/Lucene.Net.Tests/Index/Test2BSortedDocValues.cs
index 8ad5aa9..ad77b75 100644
--- a/src/Lucene.Net.Tests/Index/Test2BSortedDocValues.cs
+++ b/src/Lucene.Net.Tests/Index/Test2BSortedDocValues.cs
@@ -36,7 +36,7 @@ namespace Lucene.Net.Index
     {
         // indexes Integer.MAX_VALUE docs with a fixed binary field
         [Test]
-        public virtual void 
TestFixedSorted([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestFixedSorted([ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             BaseDirectoryWrapper dir = 
NewFSDirectory(CreateTempDir("2BFixedSorted"));
             if (dir is MockDirectoryWrapper)
@@ -47,7 +47,7 @@ namespace Lucene.Net.Index
             IndexWriter w = new IndexWriter(dir, new 
IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
                                 
.SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
                                 .SetRAMBufferSizeMB(256.0)
-                                .SetMergeScheduler(scheduler)
+                                .SetMergeScheduler(newScheduler())
                                 .SetMergePolicy(NewLogMergePolicy(false, 10))
                                 .SetOpenMode(OpenMode.CREATE));
 
@@ -98,7 +98,7 @@ namespace Lucene.Net.Index
 
         // indexes Integer.MAX_VALUE docs with a fixed binary field
         [Test]
-        public virtual void 
Test2BOrds([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
Test2BOrds([ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             BaseDirectoryWrapper dir = NewFSDirectory(CreateTempDir("2BOrds"));
             if (dir is MockDirectoryWrapper)
@@ -109,7 +109,7 @@ namespace Lucene.Net.Index
             var config = new IndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random()))
                             
.SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
                             .SetRAMBufferSizeMB(256.0)
-                            .SetMergeScheduler(scheduler)
+                            .SetMergeScheduler(newScheduler())
                             .SetMergePolicy(NewLogMergePolicy(false, 10))
                             .SetOpenMode(OpenMode.CREATE);
             IndexWriter w = new IndexWriter(dir, config);

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Index/Test2BTerms.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Index/Test2BTerms.cs 
b/src/Lucene.Net.Tests/Index/Test2BTerms.cs
index 97da141..09cdefc 100644
--- a/src/Lucene.Net.Tests/Index/Test2BTerms.cs
+++ b/src/Lucene.Net.Tests/Index/Test2BTerms.cs
@@ -169,7 +169,7 @@ namespace Lucene.Net.Index
 
         [Ignore("Very slow. Enable manually by removing Ignore.")]
         [Test]
-        public virtual void 
Test2BTerms_Mem([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
Test2BTerms_Mem([ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             if ("Lucene3x".Equals(Codec.Default.Name))
             {
@@ -195,7 +195,7 @@ namespace Lucene.Net.Index
                 IndexWriter w = new IndexWriter(dir, new 
IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
                                            
.SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
                                            .SetRAMBufferSizeMB(256.0)
-                                           .SetMergeScheduler(scheduler)
+                                           .SetMergeScheduler(newScheduler())
                                            
.SetMergePolicy(NewLogMergePolicy(false, 10))
                                            .SetOpenMode(OpenMode.CREATE));
 

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Index/Test4GBStoredFields.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Index/Test4GBStoredFields.cs 
b/src/Lucene.Net.Tests/Index/Test4GBStoredFields.cs
index 212eca2..e2dd3c8 100644
--- a/src/Lucene.Net.Tests/Index/Test4GBStoredFields.cs
+++ b/src/Lucene.Net.Tests/Index/Test4GBStoredFields.cs
@@ -41,7 +41,7 @@ namespace Lucene.Net.Index
     {
         [Ignore("//LUCENENET NOTE: This was marked Nightly in Java")]
         [Test]
-        public virtual void 
Test([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
Test([ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             MockDirectoryWrapper dir = new MockDirectoryWrapper(Random(), new 
MMapDirectory(CreateTempDir("4GBStoredFields")));
             dir.Throttling = MockDirectoryWrapper.Throttling_e.NEVER;
@@ -49,7 +49,7 @@ namespace Lucene.Net.Index
             var config = new IndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random()))
                             
.SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
                             .SetRAMBufferSizeMB(256.0)
-                            .SetMergeScheduler(scheduler)
+                            .SetMergeScheduler(newScheduler())
                             .SetMergePolicy(NewLogMergePolicy(false, 10))
                             .SetOpenMode(OpenMode.CREATE);
             IndexWriter w = new IndexWriter(dir, config);

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Index/TestCrash.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Index/TestCrash.cs 
b/src/Lucene.Net.Tests/Index/TestCrash.cs
index ee1db50..c8720d9 100644
--- a/src/Lucene.Net.Tests/Index/TestCrash.cs
+++ b/src/Lucene.Net.Tests/Index/TestCrash.cs
@@ -33,21 +33,25 @@ namespace Lucene.Net.Index
     [TestFixture]
     public class TestCrash : LuceneTestCase
     {
-        private IndexWriter InitIndex(IConcurrentMergeScheduler scheduler, 
Random random, bool initialCommit)
+        private IndexWriter InitIndex(Func<IConcurrentMergeScheduler> 
newScheduler, Random random, bool initialCommit)
         {
-            return InitIndex(scheduler, random, NewMockDirectory(random), 
initialCommit);
+            return InitIndex(newScheduler, random, NewMockDirectory(random), 
initialCommit);
         }
 
-        private IndexWriter InitIndex(IConcurrentMergeScheduler scheduler, 
Random random, MockDirectoryWrapper dir, bool initialCommit)
+        private IndexWriter InitIndex(Func<IConcurrentMergeScheduler> 
newScheduler, Random random, MockDirectoryWrapper dir, bool initialCommit)
         {
             dir.SetLockFactory(NoLockFactory.GetNoLockFactory());
 
-            scheduler.SetSuppressExceptions();
-
             IndexWriter writer = new IndexWriter(dir,
                 NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(random))
                 .SetMaxBufferedDocs(10)
-                .SetMergeScheduler(scheduler));
+                .SetMergeScheduler(newScheduler()));
+
+            IConcurrentMergeScheduler scheduler = writer.Config.MergeScheduler 
as IConcurrentMergeScheduler;
+            if (scheduler != null)
+            {
+                scheduler.SetSuppressExceptions();
+            }
 
             if (initialCommit)
             {
@@ -77,12 +81,12 @@ namespace Lucene.Net.Index
 
         [Test]
         public virtual void TestCrashWhileIndexing(
-            [ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             // this test relies on being able to open a reader before any 
commit
             // happened, so we must create an initial commit just to allow 
that, but
             // before any documents were added.
-            IndexWriter writer = InitIndex(scheduler, Random(), true);
+            IndexWriter writer = InitIndex(newScheduler, Random(), true);
             MockDirectoryWrapper dir = (MockDirectoryWrapper)writer.Directory;
 
             // We create leftover files because merging could be
@@ -107,13 +111,14 @@ namespace Lucene.Net.Index
 
         [Test]
         public virtual void TestWriterAfterCrash(
-            [ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler1,
+            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler2)
         {
             // this test relies on being able to open a reader before any 
commit
             // happened, so we must create an initial commit just to allow 
that, but
             // before any documents were added.
             Console.WriteLine("TEST: initIndex");
-            IndexWriter writer = InitIndex(scheduler, Random(), true);
+            IndexWriter writer = InitIndex(newScheduler1, Random(), true);
             Console.WriteLine("TEST: done initIndex");
             MockDirectoryWrapper dir = (MockDirectoryWrapper)writer.Directory;
 
@@ -124,7 +129,7 @@ namespace Lucene.Net.Index
             dir.PreventDoubleWrite = false;
             Console.WriteLine("TEST: now crash");
             Crash(writer);
-            writer = InitIndex(scheduler, Random(), dir, false);
+            writer = InitIndex(newScheduler2, Random(), dir, false);
             writer.Dispose();
 
             IndexReader reader = DirectoryReader.Open(dir);
@@ -143,9 +148,10 @@ namespace Lucene.Net.Index
 
         [Test]
         public virtual void TestCrashAfterReopen(
-            [ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler1,
+            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler2)
         {
-            IndexWriter writer = InitIndex(scheduler, Random(), false);
+            IndexWriter writer = InitIndex(newScheduler1, Random(), false);
             MockDirectoryWrapper dir = (MockDirectoryWrapper)writer.Directory;
 
             // We create leftover files because merging could be
@@ -153,7 +159,7 @@ namespace Lucene.Net.Index
             dir.AssertNoUnrefencedFilesOnClose = false;
 
             writer.Dispose();
-            writer = InitIndex(scheduler, Random(), dir, false);
+            writer = InitIndex(newScheduler2, Random(), dir, false);
             Assert.AreEqual(314, writer.MaxDoc);
             Crash(writer);
 
@@ -182,9 +188,9 @@ namespace Lucene.Net.Index
 
         [Test]
         public virtual void TestCrashAfterClose(
-            [ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
-            IndexWriter writer = InitIndex(scheduler, Random(), false);
+            IndexWriter writer = InitIndex(newScheduler, Random(), false);
             MockDirectoryWrapper dir = (MockDirectoryWrapper)writer.Directory;
 
             writer.Dispose();
@@ -205,9 +211,9 @@ namespace Lucene.Net.Index
 
         [Test]
         public virtual void TestCrashAfterCloseNoWait(
-            [ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
-            IndexWriter writer = InitIndex(scheduler, Random(), false);
+            IndexWriter writer = InitIndex(newScheduler, Random(), false);
             MockDirectoryWrapper dir = (MockDirectoryWrapper)writer.Directory;
 
             writer.Dispose(false);

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Index/TestIndexWriter.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriter.cs 
b/src/Lucene.Net.Tests/Index/TestIndexWriter.cs
index 1c3a56a..0669953 100644
--- a/src/Lucene.Net.Tests/Index/TestIndexWriter.cs
+++ b/src/Lucene.Net.Tests/Index/TestIndexWriter.cs
@@ -233,13 +233,13 @@ namespace Lucene.Net.Index
         }
 
         [Test]
-        public virtual void 
TestChangesAfterClose([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestChangesAfterClose([ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             Directory dir = NewDirectory();
 
             IndexWriter writer = null;
 
-            var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random())).SetMergeScheduler(scheduler);
+            var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random())).SetMergeScheduler(newScheduler());
             writer = new IndexWriter(dir, config);
             AddDoc(writer);
 

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Index/TestIndexWriterDelete.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriterDelete.cs 
b/src/Lucene.Net.Tests/Index/TestIndexWriterDelete.cs
index 3ad1330..8f4083e 100644
--- a/src/Lucene.Net.Tests/Index/TestIndexWriterDelete.cs
+++ b/src/Lucene.Net.Tests/Index/TestIndexWriterDelete.cs
@@ -6,14 +6,14 @@ using System.Threading;
 using Lucene.Net.Analysis;
 using Lucene.Net.Attributes;
 using Lucene.Net.Documents;
+using Lucene.Net.Randomized.Generators;
+using Lucene.Net.Support;
+using NUnit.Framework;
+using System.IO;
+using Lucene.Net.Util;
 
 namespace Lucene.Net.Index
 {
-    using Lucene.Net.Randomized.Generators;
-    using Lucene.Net.Support;
-    using NUnit.Framework;
-    using System.IO;
-    using Util;
     /*
          * Licensed to the Apache Software Foundation (ASF) under one or more
          * contributor license agreements.  See the NOTICE file distributed 
with
@@ -544,23 +544,23 @@ namespace Lucene.Net.Index
 
         [Test]
         public virtual void TestDeletesOnDiskFull(
-            [ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
-            DoTestOperationsOnDiskFull(scheduler, false);
+            DoTestOperationsOnDiskFull(newScheduler, false);
         }
 
         [Test]
         public virtual void TestUpdatesOnDiskFull(
-            [ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
-            DoTestOperationsOnDiskFull(scheduler, true);
+            DoTestOperationsOnDiskFull(newScheduler, true);
         }
 
         /// <summary>
         /// Make sure if modifier tries to commit but hits disk full that 
modifier
         /// remains consistent and usable. Similar to 
TestIndexReader.testDiskFull().
         /// </summary>
-        private void DoTestOperationsOnDiskFull(IConcurrentMergeScheduler 
scheduler, bool updates)
+        private void 
DoTestOperationsOnDiskFull(Func<IConcurrentMergeScheduler> newScheduler, bool 
updates)
         {
             Term searchTerm = new Term("content", "aaa");
             int START_COUNT = 157;
@@ -605,9 +605,13 @@ namespace Lucene.Net.Index
                 var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random(), MockTokenizer.WHITESPACE, false))
                                 .SetMaxBufferedDocs(1000)
                                 .SetMaxBufferedDeleteTerms(1000)
-                                .SetMergeScheduler(scheduler);
+                                .SetMergeScheduler(newScheduler());
 
-                scheduler.SetSuppressExceptions();
+                IConcurrentMergeScheduler scheduler = config.MergeScheduler as 
IConcurrentMergeScheduler;
+                if (scheduler != null)
+                {
+                    scheduler.SetSuppressExceptions();
+                }
 
                 IndexWriter modifier = new IndexWriter(dir, config);
 

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Index/TestIndexWriterExceptions.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriterExceptions.cs 
b/src/Lucene.Net.Tests/Index/TestIndexWriterExceptions.cs
index 7408cfe..72822f1 100644
--- a/src/Lucene.Net.Tests/Index/TestIndexWriterExceptions.cs
+++ b/src/Lucene.Net.Tests/Index/TestIndexWriterExceptions.cs
@@ -4,14 +4,14 @@ using System.Collections.Generic;
 using System.Diagnostics;
 using System.Threading;
 using Lucene.Net.Documents;
+using Lucene.Net.Randomized.Generators;
+using Lucene.Net.Support;
+using NUnit.Framework;
+using System.IO;
+using Lucene.Net.Util;
 
 namespace Lucene.Net.Index
 {
-    using Lucene.Net.Randomized.Generators;
-    using Lucene.Net.Support;
-    using NUnit.Framework;
-    using System.IO;
-    using Util;
     /*
          * Licensed to the Apache Software Foundation (ASF) under one or more
          * contributor license agreements.  See the NOTICE file distributed 
with
@@ -310,7 +310,7 @@ namespace Lucene.Net.Index
         }
 
         [Test]
-        public virtual void 
TestRandomExceptions([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestRandomExceptions([ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             if (VERBOSE)
             {
@@ -324,9 +324,14 @@ namespace Lucene.Net.Index
 
             var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, analyzer)
                             .SetRAMBufferSizeMB(0.1)
-                            .SetMergeScheduler(scheduler);
+                            .SetMergeScheduler(newScheduler());
 
-            scheduler.SetSuppressExceptions();
+            var scheduler = config.MergeScheduler as IConcurrentMergeScheduler;
+            if (scheduler != null)
+            {
+                scheduler.SetSuppressExceptions();
+            }
+            
 
             IndexWriter writer = RandomIndexWriter.MockIndexWriter(dir, config 
, new TestPoint1(this));
             //writer.SetMaxBufferedDocs(10);
@@ -372,7 +377,7 @@ namespace Lucene.Net.Index
         }
 
         [Test]
-        public virtual void 
TestRandomExceptionsThreads([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestRandomExceptionsThreads([ValueSource(typeof(ConcurrentMergeSchedulerFactories),
 "Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             Directory dir = NewDirectory();
             MockAnalyzer analyzer = new MockAnalyzer(Random());
@@ -380,10 +385,15 @@ namespace Lucene.Net.Index
 
             var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, analyzer)
                             .SetRAMBufferSizeMB(0.2)
-                            .SetMergeScheduler(scheduler);
+                            .SetMergeScheduler(newScheduler());
 
             IndexWriter writer = RandomIndexWriter.MockIndexWriter(dir, 
config, new TestPoint1(this));
-            scheduler.SetSuppressExceptions();
+
+            var scheduler = config.MergeScheduler as IConcurrentMergeScheduler;
+            if (scheduler != null)
+            {
+                scheduler.SetSuppressExceptions();
+            }
 
             //writer.SetMaxBufferedDocs(10);
             writer.Commit();
@@ -569,13 +579,14 @@ namespace Lucene.Net.Index
 
         // LUCENE-1210
         [Test]
-        public virtual void 
TestExceptionOnMergeInit([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestExceptionOnMergeInit([ValueSource(typeof(ConcurrentMergeSchedulerFactories),
 "Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             Directory dir = NewDirectory();
             IndexWriterConfig conf = 
NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random())).SetMaxBufferedDocs(2).SetMergePolicy(NewLogMergePolicy());
 
-            scheduler.SetSuppressExceptions();
-            conf.SetMergeScheduler(scheduler);
+            var cms = newScheduler();
+            cms.SetSuppressExceptions();
+            conf.SetMergeScheduler(cms);
             ((LogMergePolicy)conf.MergePolicy).MergeFactor = 2;
             TestPoint3 testPoint = new TestPoint3();
             IndexWriter w = RandomIndexWriter.MockIndexWriter(dir, conf, 
testPoint);
@@ -1091,7 +1102,7 @@ namespace Lucene.Net.Index
 
         // LUCENE-1044: test exception during sync
         [Test]
-        public virtual void 
TestExceptionDuringSync([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestExceptionDuringSync([ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             MockDirectoryWrapper dir = NewMockDirectory();
             FailOnlyInSync failure = new FailOnlyInSync();
@@ -1099,7 +1110,7 @@ namespace Lucene.Net.Index
 
             var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random()))
                             .SetMaxBufferedDocs(2)
-                            .SetMergeScheduler(scheduler)
+                            .SetMergeScheduler(newScheduler())
                             .SetMergePolicy(NewLogMergePolicy(5));
 
             IndexWriter writer = new IndexWriter(dir, config);
@@ -1213,7 +1224,7 @@ namespace Lucene.Net.Index
         }
 
         [Test]
-        public virtual void 
TestForceMergeExceptions([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestForceMergeExceptions([ValueSource(typeof(ConcurrentMergeSchedulerFactories),
 "Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             Directory startDir = NewDirectory();
             IndexWriterConfig conf = 
NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random())).SetMaxBufferedDocs(2).SetMergePolicy(NewLogMergePolicy());
@@ -1233,8 +1244,12 @@ namespace Lucene.Net.Index
                     Console.WriteLine("TEST: iter " + i);
                 }
                 MockDirectoryWrapper dir = new MockDirectoryWrapper(Random(), 
new RAMDirectory(startDir, NewIOContext(Random())));
-                conf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random())).SetMergeScheduler(scheduler);
-                scheduler.SetSuppressExceptions();
+                conf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random())).SetMergeScheduler(newScheduler());
+                var scheduler = conf.MergeScheduler as 
IConcurrentMergeScheduler;
+                if (scheduler != null)
+                {
+                    scheduler.SetSuppressExceptions();
+                }
                 w = new IndexWriter(dir, conf);
                 dir.RandomIOExceptionRate = 0.5;
                 try

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Index/TestIndexWriterForceMerge.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriterForceMerge.cs 
b/src/Lucene.Net.Tests/Index/TestIndexWriterForceMerge.cs
index 62de270..de61d1a 100644
--- a/src/Lucene.Net.Tests/Index/TestIndexWriterForceMerge.cs
+++ b/src/Lucene.Net.Tests/Index/TestIndexWriterForceMerge.cs
@@ -82,7 +82,7 @@ namespace Lucene.Net.Index
         }
 
         [Test]
-        public virtual void 
TestMaxNumSegments2([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestMaxNumSegments2([ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             Directory dir = NewDirectory();
 
@@ -95,7 +95,7 @@ namespace Lucene.Net.Index
             var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random()))
                             .SetMaxBufferedDocs(2)
                             .SetMergePolicy(ldmp)
-                            .SetMergeScheduler(scheduler);
+                            .SetMergeScheduler(newScheduler());
             IndexWriter writer = new IndexWriter(dir, config);
 
             for (int iter = 0; iter < 10; iter++)

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Index/TestIndexWriterMergePolicy.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriterMergePolicy.cs 
b/src/Lucene.Net.Tests/Index/TestIndexWriterMergePolicy.cs
index a6b95d7..15db222 100644
--- a/src/Lucene.Net.Tests/Index/TestIndexWriterMergePolicy.cs
+++ b/src/Lucene.Net.Tests/Index/TestIndexWriterMergePolicy.cs
@@ -1,8 +1,9 @@
 using Lucene.Net.Documents;
+using NUnit.Framework;
+using System;
 
 namespace Lucene.Net.Index
 {
-    using NUnit.Framework;
     using Directory = Lucene.Net.Store.Directory;
     using Document = Documents.Document;
     using Field = Field;
@@ -177,7 +178,7 @@ namespace Lucene.Net.Index
 
         // Test the case where a merge results in no doc at all
         [Test]
-        public virtual void 
TestMergeDocCount0([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestMergeDocCount0([ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             Directory dir = NewDirectory();
 
@@ -203,7 +204,7 @@ namespace Lucene.Net.Index
                 .SetOpenMode(OpenMode.APPEND)
                 .SetMaxBufferedDocs(10)
                 .SetMergePolicy(ldmp)
-                .SetMergeScheduler(scheduler);
+                .SetMergeScheduler(newScheduler());
             writer = new IndexWriter(dir, config);
 
             // merge factor is changed, so check invariants after all adds

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Index/TestIndexWriterOnDiskFull.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriterOnDiskFull.cs 
b/src/Lucene.Net.Tests/Index/TestIndexWriterOnDiskFull.cs
index eae0626..425e09d 100644
--- a/src/Lucene.Net.Tests/Index/TestIndexWriterOnDiskFull.cs
+++ b/src/Lucene.Net.Tests/Index/TestIndexWriterOnDiskFull.cs
@@ -631,12 +631,12 @@ namespace Lucene.Net.Index
         // an IndexWriter (hit during DW.ThreadState.Init()) is
         // OK:
         [Test]
-        public virtual void 
TestImmediateDiskFull([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestImmediateDiskFull([ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             MockDirectoryWrapper dir = NewMockDirectory();
             var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random()))
                             .SetMaxBufferedDocs(2)
-                            .SetMergeScheduler(scheduler);
+                            .SetMergeScheduler(newScheduler());
             IndexWriter writer = new IndexWriter(dir, config);
             dir.MaxSizeInBytes = Math.Max(1, dir.RecomputedActualSizeInBytes);
             Document doc = new Document();

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Index/TestIndexWriterReader.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriterReader.cs 
b/src/Lucene.Net.Tests/Index/TestIndexWriterReader.cs
index 9207b98..86f4fde 100644
--- a/src/Lucene.Net.Tests/Index/TestIndexWriterReader.cs
+++ b/src/Lucene.Net.Tests/Index/TestIndexWriterReader.cs
@@ -741,7 +741,7 @@ namespace Lucene.Net.Index
         }
 
         [Test]
-        public virtual void 
TestMergeWarmer([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestMergeWarmer([ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             Directory dir1 = GetAssertNoDeletesDirectory(NewDirectory());
             // Enroll warmer
@@ -749,7 +749,7 @@ namespace Lucene.Net.Index
             var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random()))
                             .SetMaxBufferedDocs(2)
                             .SetMergedSegmentWarmer(warmer)
-                            .SetMergeScheduler(scheduler)
+                            .SetMergeScheduler(newScheduler())
                             .SetMergePolicy(NewLogMergePolicy());
             IndexWriter writer = new IndexWriter(dir1, config);
 
@@ -784,10 +784,10 @@ namespace Lucene.Net.Index
         }
 
         [Test]
-        public virtual void 
TestAfterCommit([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestAfterCommit([ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             Directory dir1 = GetAssertNoDeletesDirectory(NewDirectory());
-            var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random())).SetMergeScheduler(scheduler);
+            var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random())).SetMergeScheduler(newScheduler());
             IndexWriter writer = new IndexWriter(dir1, config);
             writer.Commit();
 

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Index/TestIndexWriterWithThreads.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriterWithThreads.cs 
b/src/Lucene.Net.Tests/Index/TestIndexWriterWithThreads.cs
index ee541be..ef67d93 100644
--- a/src/Lucene.Net.Tests/Index/TestIndexWriterWithThreads.cs
+++ b/src/Lucene.Net.Tests/Index/TestIndexWriterWithThreads.cs
@@ -64,6 +64,7 @@ namespace Lucene.Net.Index
             internal IndexWriter Writer;
             internal bool NoErrors;
             internal volatile int AddCount;
+            internal int TimeToRunInMilliseconds = 200;
 
             /// <param name="newField">
             /// LUCENENET specific
@@ -90,7 +91,7 @@ namespace Lucene.Net.Index
 
                 int idUpto = 0;
                 int fullCount = 0;
-                long stopTime = Environment.TickCount + 200;
+                long stopTime = Environment.TickCount + 
TimeToRunInMilliseconds; // LUCENENET specific: added the ability to change how 
much time to alot
 
                 do
                 {
@@ -115,12 +116,12 @@ namespace Lucene.Net.Index
                             try
                             {
 #endif
-                            Thread.Sleep(1);
+                                Thread.Sleep(1);
 #if !NETSTANDARD
                             }
                             catch (ThreadInterruptedException ie)
                             {
-                                throw new ThreadInterruptedException("Thread 
Interrupted Exception", ie);
+                                throw new 
ThreadInterruptedException(ie.toString(), ie);
                             }
 #endif
                             if (fullCount++ >= 5)
@@ -158,7 +159,7 @@ namespace Lucene.Net.Index
         // an IndexWriter (hit during DW.ThreadState.Init()), with
         // multiple threads, is OK:
         [Test]
-        public virtual void 
TestImmediateDiskFullWithThreads([ValueSource(typeof(ConcurrentMergeSchedulers),
 "Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestImmediateDiskFullWithThreads([ValueSource(typeof(ConcurrentMergeSchedulerFactories),
 "Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             int NUM_THREADS = 3;
             int numIterations = TEST_NIGHTLY ? 10 : 3;
@@ -171,10 +172,14 @@ namespace Lucene.Net.Index
                 MockDirectoryWrapper dir = NewMockDirectory();
                 var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random()))
                                 .SetMaxBufferedDocs(2)
-                                .SetMergeScheduler(scheduler)
+                                .SetMergeScheduler(newScheduler())
                                 .SetMergePolicy(NewLogMergePolicy(4));
                 IndexWriter writer = new IndexWriter(dir, config);
-                scheduler.SetSuppressExceptions();
+                var scheduler = config.mergeScheduler as 
IConcurrentMergeScheduler;
+                if (scheduler != null)
+                {
+                    scheduler.SetSuppressExceptions();
+                }
                 dir.MaxSizeInBytes = 4 * 1024 + 20 * iter;
 
                 IndexerThread[] threads = new IndexerThread[NUM_THREADS];
@@ -210,7 +215,7 @@ namespace Lucene.Net.Index
         // speaking, this isn't valid us of Lucene's APIs, but we
         // still want to be robust to this case:
         [Test]
-        public virtual void 
TestCloseWithThreads([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestCloseWithThreads([ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             int NUM_THREADS = 3;
             int numIterations = TEST_NIGHTLY ? 7 : 3;
@@ -223,16 +228,28 @@ namespace Lucene.Net.Index
                 Directory dir = NewDirectory();
                 var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random()))
                                 .SetMaxBufferedDocs(10)
-                                .SetMergeScheduler(scheduler)
+                                .SetMergeScheduler(newScheduler())
                                 .SetMergePolicy(NewLogMergePolicy(4));
                 IndexWriter writer = new IndexWriter(dir, config);
-                scheduler.SetSuppressExceptions();
+                var scheduler = config.mergeScheduler as 
IConcurrentMergeScheduler;
+                if (scheduler != null)
+                {
+                    scheduler.SetSuppressExceptions();
+                }
 
                 IndexerThread[] threads = new IndexerThread[NUM_THREADS];
 
                 for (int i = 0; i < NUM_THREADS; i++)
                 {
-                    threads[i] = new IndexerThread(writer, false, NewField);
+                    threads[i] = new IndexerThread(writer, false, NewField)
+
+                        // LUCENENET specific - ConcurrentMergeScheduler 
+                        // seems to take too long for this test to index a 
single document
+                        // so, increasing the time from 200 to 300 ms
+
+                        // LUCENENET TODO: Find out what is taking so friggin 
long here -
+                        // probably boils down to using LINQ for something 
that needs to be fast
+                        { TimeToRunInMilliseconds = 300 };
                 }
 
                 for (int i = 0; i < NUM_THREADS; i++)
@@ -294,7 +311,7 @@ namespace Lucene.Net.Index
 
         // Runs test, with multiple threads, using the specific
         // failure to trigger an IOException
-        public virtual void 
TestMultipleThreadsFailure(IConcurrentMergeScheduler scheduler, 
MockDirectoryWrapper.Failure failure)
+        public virtual void 
TestMultipleThreadsFailure(Func<IConcurrentMergeScheduler> newScheduler, 
MockDirectoryWrapper.Failure failure)
         {
             int NUM_THREADS = 3;
 
@@ -307,10 +324,14 @@ namespace Lucene.Net.Index
                 MockDirectoryWrapper dir = NewMockDirectory();
                 var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random()))
                                 .SetMaxBufferedDocs(2)
-                                .SetMergeScheduler(scheduler)
+                                .SetMergeScheduler(newScheduler())
                                 .SetMergePolicy(NewLogMergePolicy(4));
                 IndexWriter writer = new IndexWriter(dir, config);
-                scheduler.SetSuppressExceptions();
+                var scheduler = config.mergeScheduler as 
IConcurrentMergeScheduler;
+                if (scheduler != null)
+                {
+                    scheduler.SetSuppressExceptions();
+                }
 
                 IndexerThread[] threads = new IndexerThread[NUM_THREADS];
 
@@ -372,11 +393,11 @@ namespace Lucene.Net.Index
 
         // Runs test, with one thread, using the specific failure
         // to trigger an IOException
-        public virtual void TestSingleThreadFailure(IConcurrentMergeScheduler 
scheduler, MockDirectoryWrapper.Failure failure)
+        public virtual void 
TestSingleThreadFailure(Func<IConcurrentMergeScheduler> newScheduler, 
MockDirectoryWrapper.Failure failure)
         {
             MockDirectoryWrapper dir = NewMockDirectory();
 
-            IndexWriter writer = new IndexWriter(dir, 
NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random())).SetMaxBufferedDocs(2).SetMergeScheduler(scheduler));
+            IndexWriter writer = new IndexWriter(dir, 
NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random())).SetMaxBufferedDocs(2).SetMergeScheduler(newScheduler()));
             Document doc = new Document();
             FieldType customType = new FieldType(TextField.TYPE_STORED);
             customType.StoreTermVectors = true;
@@ -449,33 +470,33 @@ namespace Lucene.Net.Index
         // LUCENE-1130: make sure initial IOException, and then 2nd
         // IOException during rollback(), is OK:
         [Test]
-        public virtual void 
TestIOExceptionDuringAbort([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestIOExceptionDuringAbort([ValueSource(typeof(ConcurrentMergeSchedulerFactories),
 "Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
-            TestSingleThreadFailure(scheduler, new 
FailOnlyOnAbortOrFlush(false));
+            TestSingleThreadFailure(newScheduler, new 
FailOnlyOnAbortOrFlush(false));
         }
 
         // LUCENE-1130: make sure initial IOException, and then 2nd
         // IOException during rollback(), is OK:
         [Test]
-        public virtual void 
TestIOExceptionDuringAbortOnlyOnce([ValueSource(typeof(ConcurrentMergeSchedulers),
 "Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestIOExceptionDuringAbortOnlyOnce([ValueSource(typeof(ConcurrentMergeSchedulerFactories),
 "Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
-            TestSingleThreadFailure(scheduler, new 
FailOnlyOnAbortOrFlush(true));
+            TestSingleThreadFailure(newScheduler, new 
FailOnlyOnAbortOrFlush(true));
         }
 
         // LUCENE-1130: make sure initial IOException, and then 2nd
         // IOException during rollback(), with multiple threads, is OK:
         [Test]
-        public virtual void 
TestIOExceptionDuringAbortWithThreads([ValueSource(typeof(ConcurrentMergeSchedulers),
 "Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestIOExceptionDuringAbortWithThreads([ValueSource(typeof(ConcurrentMergeSchedulerFactories),
 "Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
-            TestMultipleThreadsFailure(scheduler, new 
FailOnlyOnAbortOrFlush(false));
+            TestMultipleThreadsFailure(newScheduler, new 
FailOnlyOnAbortOrFlush(false));
         }
 
         // LUCENE-1130: make sure initial IOException, and then 2nd
         // IOException during rollback(), with multiple threads, is OK:
         [Test]
-        public virtual void 
TestIOExceptionDuringAbortWithThreadsOnlyOnce([ValueSource(typeof(ConcurrentMergeSchedulers),
 "Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestIOExceptionDuringAbortWithThreadsOnlyOnce([ValueSource(typeof(ConcurrentMergeSchedulerFactories),
 "Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
-            TestMultipleThreadsFailure(scheduler, new 
FailOnlyOnAbortOrFlush(true));
+            TestMultipleThreadsFailure(newScheduler, new 
FailOnlyOnAbortOrFlush(true));
         }
 
         // Throws IOException during DocumentsWriter.writeSegment
@@ -508,30 +529,30 @@ namespace Lucene.Net.Index
 
         // LUCENE-1130: test IOException in writeSegment
         [Test]
-        public virtual void 
TestIOExceptionDuringWriteSegment([ValueSource(typeof(ConcurrentMergeSchedulers),
 "Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestIOExceptionDuringWriteSegment([ValueSource(typeof(ConcurrentMergeSchedulerFactories),
 "Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
-            TestSingleThreadFailure(scheduler, new 
FailOnlyInWriteSegment(false));
+            TestSingleThreadFailure(newScheduler, new 
FailOnlyInWriteSegment(false));
         }
 
         // LUCENE-1130: test IOException in writeSegment
         [Test]
-        public virtual void 
TestIOExceptionDuringWriteSegmentOnlyOnce([ValueSource(typeof(ConcurrentMergeSchedulers),
 "Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestIOExceptionDuringWriteSegmentOnlyOnce([ValueSource(typeof(ConcurrentMergeSchedulerFactories),
 "Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
-            TestSingleThreadFailure(scheduler, new 
FailOnlyInWriteSegment(true));
+            TestSingleThreadFailure(newScheduler, new 
FailOnlyInWriteSegment(true));
         }
 
         // LUCENE-1130: test IOException in writeSegment, with threads
         [Test]
-        public virtual void 
TestIOExceptionDuringWriteSegmentWithThreads([ValueSource(typeof(ConcurrentMergeSchedulers),
 "Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestIOExceptionDuringWriteSegmentWithThreads([ValueSource(typeof(ConcurrentMergeSchedulerFactories),
 "Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
-            TestMultipleThreadsFailure(scheduler, new 
FailOnlyInWriteSegment(false));
+            TestMultipleThreadsFailure(newScheduler, new 
FailOnlyInWriteSegment(false));
         }
 
         // LUCENE-1130: test IOException in writeSegment, with threads
         [Test]
-        public virtual void 
TestIOExceptionDuringWriteSegmentWithThreadsOnlyOnce([ValueSource(typeof(ConcurrentMergeSchedulers),
 "Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestIOExceptionDuringWriteSegmentWithThreadsOnlyOnce([ValueSource(typeof(ConcurrentMergeSchedulerFactories),
 "Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
-            TestMultipleThreadsFailure(scheduler, new 
FailOnlyInWriteSegment(true));
+            TestMultipleThreadsFailure(newScheduler, new 
FailOnlyInWriteSegment(true));
         }
 
         //  LUCENE-3365: Test adding two documents with the same field from 
two different IndexWriters

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Index/TestStressIndexing.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Index/TestStressIndexing.cs 
b/src/Lucene.Net.Tests/Index/TestStressIndexing.cs
index 428a2d0..610a81b 100644
--- a/src/Lucene.Net.Tests/Index/TestStressIndexing.cs
+++ b/src/Lucene.Net.Tests/Index/TestStressIndexing.cs
@@ -221,7 +221,7 @@ namespace Lucene.Net.Index
         */
 
         [Test]
-        public virtual void 
TestStressIndexAndSearching([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestStressIndexAndSearching([ValueSource(typeof(ConcurrentMergeSchedulerFactories),
 "Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             Directory directory = NewDirectory();
             MockDirectoryWrapper wrapper = directory as MockDirectoryWrapper;
@@ -230,7 +230,7 @@ namespace Lucene.Net.Index
                 wrapper.AssertNoUnrefencedFilesOnClose = true;
             }
 
-            RunStressTest(directory, scheduler);
+            RunStressTest(directory, newScheduler());
             directory.Dispose();
         }
     }

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Index/TestTransactions.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Index/TestTransactions.cs 
b/src/Lucene.Net.Tests/Index/TestTransactions.cs
index 627b21c..0f1c82b 100644
--- a/src/Lucene.Net.Tests/Index/TestTransactions.cs
+++ b/src/Lucene.Net.Tests/Index/TestTransactions.cs
@@ -110,44 +110,44 @@ namespace Lucene.Net.Index
 
         private class IndexerThread : TimedThread
         {
-            private readonly TestTransactions OuterInstance;
-            private IConcurrentMergeScheduler _scheduler1;
-            private IConcurrentMergeScheduler _scheduler2;
-            internal Directory Dir1;
-            internal Directory Dir2;
+            private readonly TestTransactions outerInstance;
+            private Func<IConcurrentMergeScheduler> newScheduler1;
+            private Func<IConcurrentMergeScheduler> newScheduler2;
+            internal Directory dir1;
+            internal Directory dir2;
             internal object @lock;
-            internal int NextID;
+            internal int nextID;
 
             public IndexerThread(TestTransactions outerInstance, object @lock, 
                 Directory dir1, Directory dir2,
-                IConcurrentMergeScheduler scheduler1, 
IConcurrentMergeScheduler scheduler2, 
+                Func<IConcurrentMergeScheduler> newScheduler1, 
Func<IConcurrentMergeScheduler> newScheduler2,
                 TimedThread[] threads)
                 : base(threads)
             {
-                _scheduler1 = scheduler1;
-                _scheduler2 = scheduler2;
-                this.OuterInstance = outerInstance;
+                this.newScheduler1 = newScheduler1;
+                this.newScheduler2 = newScheduler2;
+                this.outerInstance = outerInstance;
                 this.@lock = @lock;
-                this.Dir1 = dir1;
-                this.Dir2 = dir2;
+                this.dir1 = dir1;
+                this.dir2 = dir2;
             }
 
             public override void DoWork()
             {
-                var config = 
OuterInstance.NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random()))
+                var config = 
outerInstance.NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random()))
                                 .SetMaxBufferedDocs(3)
-                                .SetMergeScheduler(_scheduler1)
+                                .SetMergeScheduler(newScheduler1())
                                 .SetMergePolicy(NewLogMergePolicy(2));
-                IndexWriter writer1 = new IndexWriter(Dir1, config);
+                IndexWriter writer1 = new IndexWriter(dir1, config);
                 
((IConcurrentMergeScheduler)writer1.Config.MergeScheduler).SetSuppressExceptions();
 
                 // Intentionally use different params so flush/merge
                 // happen @ different times
-                var config2 = 
OuterInstance.NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random()))
+                var config2 = 
outerInstance.NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random()))
                                 .SetMaxBufferedDocs(2)
-                                .SetMergeScheduler(_scheduler2)
+                                .SetMergeScheduler(newScheduler2())
                                 .SetMergePolicy(NewLogMergePolicy(3));
-                IndexWriter writer2 = new IndexWriter(Dir2, config2);
+                IndexWriter writer2 = new IndexWriter(dir2, config2);
                 
((IConcurrentMergeScheduler)writer2.Config.MergeScheduler).SetSuppressExceptions();
 
                 Update(writer1);
@@ -201,13 +201,13 @@ namespace Lucene.Net.Index
                 {
                     Document d = new Document();
                     int n = Random().Next();
-                    d.Add(OuterInstance.NewField("id", 
Convert.ToString(NextID++), customType));
-                    d.Add(OuterInstance.NewTextField("contents", 
English.IntToEnglish(n), Field.Store.NO));
+                    d.Add(outerInstance.NewField("id", 
Convert.ToString(nextID++), customType));
+                    d.Add(outerInstance.NewTextField("contents", 
English.IntToEnglish(n), Field.Store.NO));
                     writer.AddDocument(d);
                 }
 
                 // Delete 5 docs:
-                int deleteID = NextID - 1;
+                int deleteID = nextID - 1;
                 for (int j = 0; j < 5; j++)
                 {
                     writer.DeleteDocuments(new Term("id", "" + deleteID));
@@ -218,16 +218,16 @@ namespace Lucene.Net.Index
 
         private class SearcherThread : TimedThread
         {
-            internal Directory Dir1;
-            internal Directory Dir2;
+            internal Directory dir1;
+            internal Directory dir2;
             internal object @lock;
 
             public SearcherThread(object @lock, Directory dir1, Directory 
dir2, TimedThread[] threads)
                 : base(threads)
             {
                 this.@lock = @lock;
-                this.Dir1 = dir1;
-                this.Dir2 = dir2;
+                this.dir1 = dir1;
+                this.dir2 = dir2;
             }
 
             public override void DoWork()
@@ -237,8 +237,8 @@ namespace Lucene.Net.Index
                 {
                     try
                     {
-                        r1 = DirectoryReader.Open(Dir1);
-                        r2 = DirectoryReader.Open(Dir2);
+                        r1 = DirectoryReader.Open(dir1);
+                        r2 = DirectoryReader.Open(dir2);
                     }
                     catch (IOException e)
                     {
@@ -279,10 +279,10 @@ namespace Lucene.Net.Index
             writer.Dispose();
         }
 
-        [Test, Sequential]
+        [Test]
         public virtual void TestTransactions_Mem(
-            [ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler1, 
-            [ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler2)
+            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler1,
+            [ValueSource(typeof(ConcurrentMergeSchedulerFactories), 
"Values")]Func<IConcurrentMergeScheduler> newScheduler2)
         {
             Console.WriteLine("Start test");
             // we cant use non-ramdir on windows, because this test needs to 
double-write.
@@ -306,7 +306,8 @@ namespace Lucene.Net.Index
             TimedThread[] threads = new TimedThread[3];
             int numThread = 0;
 
-            IndexerThread indexerThread = new IndexerThread(this, this, dir1, 
dir2, scheduler1, scheduler2, threads);
+            IndexerThread indexerThread = new IndexerThread(this, this, dir1, 
dir2, newScheduler1, newScheduler2, threads);
+
             threads[numThread++] = indexerThread;
             indexerThread.Start();
 

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/99a4b35d/src/Lucene.Net.Tests/Search/TestSearcherManager.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Search/TestSearcherManager.cs 
b/src/Lucene.Net.Tests/Search/TestSearcherManager.cs
index 1460f52..cd03219 100644
--- a/src/Lucene.Net.Tests/Search/TestSearcherManager.cs
+++ b/src/Lucene.Net.Tests/Search/TestSearcherManager.cs
@@ -434,11 +434,11 @@ namespace Lucene.Net.Search
         }
 
         [Test]
-        public virtual void 
TestReferenceDecrementIllegally([ValueSource(typeof(ConcurrentMergeSchedulers), 
"Values")]IConcurrentMergeScheduler scheduler)
+        public virtual void 
TestReferenceDecrementIllegally([ValueSource(typeof(ConcurrentMergeSchedulerFactories),
 "Values")]Func<IConcurrentMergeScheduler> newScheduler)
         {
             Directory dir = NewDirectory();
             var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new 
MockAnalyzer(Random()))
-                            .SetMergeScheduler(scheduler);
+                            .SetMergeScheduler(newScheduler());
             IndexWriter writer = new IndexWriter(dir, config);
             SearcherManager sm = new SearcherManager(writer, false, new 
SearcherFactory());
             writer.AddDocument(new Document());

Reply via email to