Skip to content

Commit fadeb23

Browse files
committed
Fix IndexWriter.Dispose breaking the standard Dispose contract, #1399
1 parent fb6fdb7 commit fadeb23

15 files changed

Lines changed: 57 additions & 104 deletions

src/Lucene.Net.Benchmark/ByTask/Tasks/CloseIndexTask.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public override int DoLogic()
4848
infoStream.Dispose();
4949
}
5050
#pragma warning disable 612, 618
51-
iw.Dispose(doWait);
51+
iw.Close(doWait);
5252
#pragma warning restore 612, 618
5353
RunData.IndexWriter = null;
5454
}

src/Lucene.Net.TestFramework/Index/ThreadedIndexingAndSearchingTestCase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -773,7 +773,7 @@ public virtual void RunTest(string testName)
773773

774774
DoClose();
775775
#pragma warning disable 612, 618
776-
m_writer.Dispose(false);
776+
m_writer.Close(false);
777777
#pragma warning restore 612, 618
778778

779779
// Cannot shutdown until after writer is closed because

src/Lucene.Net.Tests/Index/TestAddIndexes.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -805,7 +805,7 @@ internal virtual void Close(bool doWait)
805805
{
806806
didClose = true;
807807
#pragma warning disable 612, 618
808-
writer2.Dispose(doWait);
808+
writer2.Close(doWait);
809809
#pragma warning restore 612, 618
810810
}
811811

src/Lucene.Net.Tests/Index/TestBackwardsCompatibility.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ public virtual void TestUnsupportedOldIndexes()
314314
if (writer != null)
315315
{
316316
#pragma warning disable 612, 618
317-
writer.Dispose(false);
317+
writer.Close(false);
318318
#pragma warning restore 612, 618
319319
}
320320
writer = null;
@@ -1053,7 +1053,7 @@ public virtual void TestUpgradeOldSingleSegmentIndexWithAdditions()
10531053
AddDoc(w, id++);
10541054
}
10551055
#pragma warning disable 612, 618
1056-
w.Dispose(false);
1056+
w.Close(false);
10571057
#pragma warning restore 612, 618
10581058
}
10591059

@@ -1066,7 +1066,7 @@ public virtual void TestUpgradeOldSingleSegmentIndexWithAdditions()
10661066
IndexWriter iw = new IndexWriter(dir, iwc_);
10671067
iw.AddIndexes(ramDir);
10681068
#pragma warning disable 612, 618
1069-
iw.Dispose(false);
1069+
iw.Close(false);
10701070
#pragma warning restore 612, 618
10711071

10721072
// determine count of segments in modified index

src/Lucene.Net.Tests/Index/TestBackwardsCompatibility3x.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ public virtual void TestUnsupportedOldIndexes()
245245
if (writer != null)
246246
{
247247
#pragma warning disable 612, 618
248-
writer.Dispose(false);
248+
writer.Close(false);
249249
#pragma warning restore 612, 618
250250
}
251251
writer = null;
@@ -958,7 +958,7 @@ public virtual void TestUpgradeOldSingleSegmentIndexWithAdditions()
958958
AddDoc(w, id++);
959959
}
960960
#pragma warning disable 612, 618
961-
w.Dispose(false);
961+
w.Close(false);
962962
#pragma warning restore 612, 618
963963
}
964964

@@ -970,7 +970,7 @@ public virtual void TestUpgradeOldSingleSegmentIndexWithAdditions()
970970
IndexWriter w_ = new IndexWriter(dir, iwc_);
971971
w_.AddIndexes(ramDir);
972972
#pragma warning disable 612, 618
973-
w_.Dispose(false);
973+
w_.Close(false);
974974
#pragma warning restore 612, 618
975975

976976
// determine count of segments in modified index

src/Lucene.Net.Tests/Index/TestConcurrentMergeScheduler.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public override void Eval(MockDirectoryWrapper dir)
6868
// LUCENENET specific: for these to work in release mode, we have added [MethodImpl(MethodImplOptions.NoInlining)]
6969
// to each possible target of the StackTraceHelper. If these change, so must the attribute on the target methods.
7070
bool isDoFlush = StackTraceHelper.DoesStackTraceContainMethod(nameof(DocumentsWriterPerThread.Flush));
71-
bool isClose = StackTraceHelper.DoesStackTraceContainMethod(nameof(IndexWriter.Close)) || // LUCENENET NOTE: Close is aggressively inlined, so likely won't hit this case, but would hit Dispose
71+
bool isClose = StackTraceHelper.DoesStackTraceContainMethod(nameof(IndexWriter.Close)) || // LUCENENET NOTE: Close is marked NoInlining so it stays on the stack; Dispose is checked as well as a belt-and-suspenders
7272
StackTraceHelper.DoesStackTraceContainMethod(nameof(IndexWriter.Dispose));
7373

7474
if (isDoFlush && !isClose && Random.NextBoolean())
@@ -262,7 +262,7 @@ public virtual void TestNoWaitClose()
262262
writer.Commit();
263263

264264
#pragma warning disable 612, 618
265-
writer.Dispose(false);
265+
writer.Close(false);
266266
#pragma warning restore 612, 618
267267

268268
IndexReader reader = DirectoryReader.Open(directory);
@@ -319,7 +319,7 @@ public virtual void TestMaxMergeCount()
319319
}
320320
}
321321
#pragma warning disable 612, 618
322-
w.Dispose(false);
322+
w.Close(false);
323323
#pragma warning restore 612, 618
324324
dir.Dispose();
325325
}

src/Lucene.Net.Tests/Index/TestCrash.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ public virtual void TestCrashAfterCloseNoWait()
211211
MockDirectoryWrapper dir = (MockDirectoryWrapper)writer.Directory;
212212

213213
#pragma warning disable 612, 618
214-
writer.Dispose(false);
214+
writer.Close(false);
215215
#pragma warning restore 612, 618
216216

217217
dir.Crash();

src/Lucene.Net.Tests/Index/TestFlushByRamOrCountsPolicy.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -314,9 +314,7 @@ public virtual void TestStallControl()
314314
Assert.IsTrue(docsWriter.flushControl.stallControl.WasStalled);
315315
}
316316
AssertActiveBytesAfter(flushControl);
317-
#pragma warning disable 612, 618
318-
writer.Dispose(true);
319-
#pragma warning restore 612, 618
317+
writer.Dispose();
320318
dir.Dispose();
321319
}
322320
}

src/Lucene.Net.Tests/Index/TestIndexWriterMerging.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,7 +434,7 @@ public virtual void TestNoWaitClose()
434434
t1.Start();
435435

436436
#pragma warning disable 612, 618
437-
writer.Dispose(false);
437+
writer.Close(false);
438438
#pragma warning restore 612, 618
439439
t1.Join();
440440

src/Lucene.Net.Tests/Index/TestIndexWriterOnDiskFull.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -665,7 +665,7 @@ public virtual void TestImmediateDiskFull()
665665
try
666666
{
667667
#pragma warning disable 612, 618
668-
writer.Dispose(false);
668+
writer.Close(false);
669669
#pragma warning restore 612, 618
670670
Assert.Fail("did not hit disk full");
671671
}
@@ -677,7 +677,7 @@ public virtual void TestImmediateDiskFull()
677677
// cleanly close:
678678
dir.MaxSizeInBytes = 0;
679679
#pragma warning disable 612, 618
680-
writer.Dispose(false);
680+
writer.Close(false);
681681
#pragma warning restore 612, 618
682682
dir.Dispose();
683683
}

0 commit comments

Comments
 (0)