Lucene.Net.Core.Index.DirectoryReader refactor: Renamed IsCurrent > IsCurrent() (always performs an action before returning the result)
Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/85bcff30 Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/85bcff30 Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/85bcff30 Branch: refs/heads/api-work Commit: 85bcff30538a516f17dcd4bb31b7a318ef199325 Parents: c57e7bd Author: Shad Storhaug <[email protected]> Authored: Tue Mar 21 18:23:56 2017 +0700 Committer: Shad Storhaug <[email protected]> Committed: Tue Mar 21 18:23:56 2017 +0700 ---------------------------------------------------------------------- src/Lucene.Net.Core/Index/DirectoryReader.cs | 2 +- .../Index/FilterDirectoryReader.cs | 7 +-- .../Index/StandardDirectoryReader.cs | 39 ++++++------- src/Lucene.Net.Core/Search/SearcherManager.cs | 4 +- .../Index/TestDirectoryReader.cs | 12 ++-- .../Index/TestIndexWriterCommit.cs | 4 +- .../Index/TestIndexWriterNRTIsCurrent.cs | 2 +- .../Index/TestIndexWriterReader.cs | 60 ++++++++++---------- src/Lucene.Net.Tests/Index/TestIsCurrent.cs | 8 +-- 9 files changed, 66 insertions(+), 72 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucenenet/blob/85bcff30/src/Lucene.Net.Core/Index/DirectoryReader.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net.Core/Index/DirectoryReader.cs b/src/Lucene.Net.Core/Index/DirectoryReader.cs index 95e32fc..9265635 100644 --- a/src/Lucene.Net.Core/Index/DirectoryReader.cs +++ b/src/Lucene.Net.Core/Index/DirectoryReader.cs @@ -466,7 +466,7 @@ namespace Lucene.Net.Index /// changes.</p> /// </summary> /// <exception cref="IOException"> if there is a low-level IO error </exception> - public abstract bool IsCurrent { get; } + public abstract bool IsCurrent(); /// <summary> /// Expert: return the IndexCommit that this reader has opened. http://git-wip-us.apache.org/repos/asf/lucenenet/blob/85bcff30/src/Lucene.Net.Core/Index/FilterDirectoryReader.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net.Core/Index/FilterDirectoryReader.cs b/src/Lucene.Net.Core/Index/FilterDirectoryReader.cs index 56547fe..5f75c57 100644 --- a/src/Lucene.Net.Core/Index/FilterDirectoryReader.cs +++ b/src/Lucene.Net.Core/Index/FilterDirectoryReader.cs @@ -143,12 +143,9 @@ namespace Lucene.Net.Index } } - public override bool IsCurrent + public override bool IsCurrent() { - get - { - return m_input.IsCurrent; - } + return m_input.IsCurrent(); } public override IndexCommit IndexCommit http://git-wip-us.apache.org/repos/asf/lucenenet/blob/85bcff30/src/Lucene.Net.Core/Index/StandardDirectoryReader.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net.Core/Index/StandardDirectoryReader.cs b/src/Lucene.Net.Core/Index/StandardDirectoryReader.cs index 1064473..969ffa0 100644 --- a/src/Lucene.Net.Core/Index/StandardDirectoryReader.cs +++ b/src/Lucene.Net.Core/Index/StandardDirectoryReader.cs @@ -379,7 +379,7 @@ namespace Lucene.Net.Index { if (commit == null) { - if (IsCurrent) + if (IsCurrent()) { return null; } @@ -436,28 +436,25 @@ namespace Lucene.Net.Index } } - public override bool IsCurrent + public override bool IsCurrent() { - get + EnsureOpen(); + if (writer == null || writer.IsClosed) { - EnsureOpen(); - if (writer == null || writer.IsClosed) - { - // Fully read the segments file: this ensures that it's - // completely written so that if - // IndexWriter.prepareCommit has been called (but not - // yet commit), then the reader will still see itself as - // current: - SegmentInfos sis = new SegmentInfos(); - sis.Read(m_directory); - - // we loaded SegmentInfos from the directory - return sis.Version == segmentInfos.Version; - } - else - { - return writer.NrtIsCurrent(segmentInfos); - } + // Fully read the segments file: this ensures that it's + // completely written so that if + // IndexWriter.prepareCommit has been called (but not + // yet commit), then the reader will still see itself as + // current: + SegmentInfos sis = new SegmentInfos(); + sis.Read(m_directory); + + // we loaded SegmentInfos from the directory + return sis.Version == segmentInfos.Version; + } + else + { + return writer.NrtIsCurrent(segmentInfos); } } http://git-wip-us.apache.org/repos/asf/lucenenet/blob/85bcff30/src/Lucene.Net.Core/Search/SearcherManager.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net.Core/Search/SearcherManager.cs b/src/Lucene.Net.Core/Search/SearcherManager.cs index 65cf5af..da249bd 100644 --- a/src/Lucene.Net.Core/Search/SearcherManager.cs +++ b/src/Lucene.Net.Core/Search/SearcherManager.cs @@ -80,7 +80,7 @@ namespace Lucene.Net.Search /// custom behavior. /// </param> /// <exception cref="IOException"> if there is a low-level I/O error </exception> - public SearcherManager(IndexWriter writer, bool applyAllDeletes, SearcherFactory searcherFactory = null) + public SearcherManager(IndexWriter writer, bool applyAllDeletes, SearcherFactory searcherFactory) { if (searcherFactory == null) { @@ -149,7 +149,7 @@ namespace Lucene.Net.Search { IndexReader r = searcher.IndexReader; Debug.Assert(r is DirectoryReader, "searcher's IndexReader should be a DirectoryReader, but got " + r); - return ((DirectoryReader)r).IsCurrent; + return ((DirectoryReader)r).IsCurrent(); } finally { http://git-wip-us.apache.org/repos/asf/lucenenet/blob/85bcff30/src/Lucene.Net.Tests/Index/TestDirectoryReader.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net.Tests/Index/TestDirectoryReader.cs b/src/Lucene.Net.Tests/Index/TestDirectoryReader.cs index d1fe526..25cbad9 100644 --- a/src/Lucene.Net.Tests/Index/TestDirectoryReader.cs +++ b/src/Lucene.Net.Tests/Index/TestDirectoryReader.cs @@ -147,17 +147,17 @@ namespace Lucene.Net.Index writer.Dispose(); // set up reader: DirectoryReader reader = DirectoryReader.Open(d); - Assert.IsTrue(reader.IsCurrent); + Assert.IsTrue(reader.IsCurrent()); // modify index by adding another document: writer = new IndexWriter(d, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetOpenMode(OpenMode.APPEND)); AddDocumentWithFields(writer); writer.Dispose(); - Assert.IsFalse(reader.IsCurrent); + Assert.IsFalse(reader.IsCurrent()); // re-create index: writer = new IndexWriter(d, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetOpenMode(OpenMode.CREATE)); AddDocumentWithFields(writer); writer.Dispose(); - Assert.IsFalse(reader.IsCurrent); + Assert.IsFalse(reader.IsCurrent()); reader.Dispose(); d.Dispose(); } @@ -943,14 +943,14 @@ namespace Lucene.Net.Index Document doc = new Document(); writer.AddDocument(doc); DirectoryReader r = DirectoryReader.Open(dir); - Assert.IsTrue(r.IsCurrent); + Assert.IsTrue(r.IsCurrent()); writer.AddDocument(doc); writer.PrepareCommit(); - Assert.IsTrue(r.IsCurrent); + Assert.IsTrue(r.IsCurrent()); DirectoryReader r2 = DirectoryReader.OpenIfChanged(r); Assert.IsNull(r2); writer.Commit(); - Assert.IsFalse(r.IsCurrent); + Assert.IsFalse(r.IsCurrent()); writer.Dispose(); r.Dispose(); dir.Dispose(); http://git-wip-us.apache.org/repos/asf/lucenenet/blob/85bcff30/src/Lucene.Net.Tests/Index/TestIndexWriterCommit.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriterCommit.cs b/src/Lucene.Net.Tests/Index/TestIndexWriterCommit.cs index 4cd35f2..de3ed6f 100644 --- a/src/Lucene.Net.Tests/Index/TestIndexWriterCommit.cs +++ b/src/Lucene.Net.Tests/Index/TestIndexWriterCommit.cs @@ -79,12 +79,12 @@ namespace Lucene.Net.Index hits = searcher.Search(new TermQuery(searchTerm), null, 1000).ScoreDocs; Assert.AreEqual(14, hits.Length, "reader incorrectly sees changes from writer"); r.Dispose(); - Assert.IsTrue(reader.IsCurrent, "reader should have still been current"); + Assert.IsTrue(reader.IsCurrent(), "reader should have still been current"); } // Now, close the writer: writer.Dispose(); - Assert.IsFalse(reader.IsCurrent, "reader should not be current now"); + Assert.IsFalse(reader.IsCurrent(), "reader should not be current now"); IndexReader ir = DirectoryReader.Open(dir); searcher = NewSearcher(ir); http://git-wip-us.apache.org/repos/asf/lucenenet/blob/85bcff30/src/Lucene.Net.Tests/Index/TestIndexWriterNRTIsCurrent.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net.Tests/Index/TestIndexWriterNRTIsCurrent.cs b/src/Lucene.Net.Tests/Index/TestIndexWriterNRTIsCurrent.cs index 3866d4d..9c302ca 100644 --- a/src/Lucene.Net.Tests/Index/TestIndexWriterNRTIsCurrent.cs +++ b/src/Lucene.Net.Tests/Index/TestIndexWriterNRTIsCurrent.cs @@ -219,7 +219,7 @@ namespace Lucene.Net.Index { try { - bool current = reader.IsCurrent; + bool current = reader.IsCurrent(); if (VERBOSE) { Console.WriteLine("Thread: " + Thread.CurrentThread + " Reader: " + reader + " isCurrent:" + current); http://git-wip-us.apache.org/repos/asf/lucenenet/blob/85bcff30/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 e94fd27..901f1fa 100644 --- a/src/Lucene.Net.Tests/Index/TestIndexWriterReader.cs +++ b/src/Lucene.Net.Tests/Index/TestIndexWriterReader.cs @@ -107,22 +107,22 @@ namespace Lucene.Net.Index break; } } - Assert.IsFalse(reader.IsCurrent); + Assert.IsFalse(reader.IsCurrent()); reader.Dispose(); } writer.ForceMerge(1); // make sure all merging is done etc. DirectoryReader dirReader = writer.GetReader(); writer.Commit(); // no changes that are not visible to the reader - Assert.IsTrue(dirReader.IsCurrent); + Assert.IsTrue(dirReader.IsCurrent()); writer.Dispose(); - Assert.IsTrue(dirReader.IsCurrent); // all changes are visible to the reader + Assert.IsTrue(dirReader.IsCurrent()); // all changes are visible to the reader iwc = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())); writer = new IndexWriter(dir1, iwc); - Assert.IsTrue(dirReader.IsCurrent); + Assert.IsTrue(dirReader.IsCurrent()); writer.AddDocument(DocHelper.CreateDocument(1, "x", 1 + Random().Next(5))); - Assert.IsTrue(dirReader.IsCurrent); // segments in ram but IW is different to the readers one + Assert.IsTrue(dirReader.IsCurrent()); // segments in ram but IW is different to the readers one writer.Dispose(); - Assert.IsFalse(dirReader.IsCurrent); // segments written + Assert.IsFalse(dirReader.IsCurrent()); // segments written dirReader.Dispose(); dir1.Dispose(); } @@ -160,7 +160,7 @@ namespace Lucene.Net.Index // get a reader DirectoryReader r1 = writer.GetReader(); - Assert.IsTrue(r1.IsCurrent); + Assert.IsTrue(r1.IsCurrent()); string id10 = r1.Document(10).GetField("id").GetStringValue(); @@ -168,10 +168,10 @@ namespace Lucene.Net.Index newDoc.RemoveField("id"); newDoc.Add(NewStringField("id", Convert.ToString(8000), Field.Store.YES)); writer.UpdateDocument(new Term("id", id10), newDoc); - Assert.IsFalse(r1.IsCurrent); + Assert.IsFalse(r1.IsCurrent()); DirectoryReader r2 = writer.GetReader(); - Assert.IsTrue(r2.IsCurrent); + Assert.IsTrue(r2.IsCurrent()); Assert.AreEqual(0, Count(new Term("id", id10), r2)); if (VERBOSE) { @@ -180,13 +180,13 @@ namespace Lucene.Net.Index Assert.AreEqual(1, Count(new Term("id", Convert.ToString(8000)), r2)); r1.Dispose(); - Assert.IsTrue(r2.IsCurrent); + Assert.IsTrue(r2.IsCurrent()); writer.Dispose(); - Assert.IsTrue(r2.IsCurrent); + Assert.IsTrue(r2.IsCurrent()); DirectoryReader r3 = DirectoryReader.Open(dir1); - Assert.IsTrue(r3.IsCurrent); - Assert.IsTrue(r2.IsCurrent); + Assert.IsTrue(r3.IsCurrent()); + Assert.IsTrue(r2.IsCurrent()); Assert.AreEqual(0, Count(new Term("id", id10), r3)); Assert.AreEqual(1, Count(new Term("id", Convert.ToString(8000)), r3)); @@ -194,13 +194,13 @@ namespace Lucene.Net.Index Document doc = new Document(); doc.Add(NewTextField("field", "a b c", Field.Store.NO)); writer.AddDocument(doc); - Assert.IsTrue(r2.IsCurrent); - Assert.IsTrue(r3.IsCurrent); + Assert.IsTrue(r2.IsCurrent()); + Assert.IsTrue(r3.IsCurrent()); writer.Dispose(); - Assert.IsFalse(r2.IsCurrent); - Assert.IsTrue(!r3.IsCurrent); + Assert.IsFalse(r2.IsCurrent()); + Assert.IsTrue(!r3.IsCurrent()); r2.Dispose(); r3.Dispose(); @@ -225,23 +225,23 @@ namespace Lucene.Net.Index doc = new Document(); doc.Add(NewTextField("field", "a b c", Field.Store.NO)); DirectoryReader nrtReader = writer.GetReader(); - Assert.IsTrue(nrtReader.IsCurrent); + Assert.IsTrue(nrtReader.IsCurrent()); writer.AddDocument(doc); - Assert.IsFalse(nrtReader.IsCurrent); // should see the changes + Assert.IsFalse(nrtReader.IsCurrent()); // should see the changes writer.ForceMerge(1); // make sure we don't have a merge going on - Assert.IsFalse(nrtReader.IsCurrent); + Assert.IsFalse(nrtReader.IsCurrent()); nrtReader.Dispose(); DirectoryReader dirReader = DirectoryReader.Open(dir); nrtReader = writer.GetReader(); - Assert.IsTrue(dirReader.IsCurrent); - Assert.IsTrue(nrtReader.IsCurrent); // nothing was committed yet so we are still current + Assert.IsTrue(dirReader.IsCurrent()); + Assert.IsTrue(nrtReader.IsCurrent()); // nothing was committed yet so we are still current Assert.AreEqual(2, nrtReader.MaxDoc); // sees the actual document added Assert.AreEqual(1, dirReader.MaxDoc); writer.Dispose(); // close is actually a commit both should see the changes - Assert.IsTrue(nrtReader.IsCurrent); - Assert.IsFalse(dirReader.IsCurrent); // this reader has been opened before the writer was closed / committed + Assert.IsTrue(nrtReader.IsCurrent()); + Assert.IsFalse(dirReader.IsCurrent()); // this reader has been opened before the writer was closed / committed dirReader.Dispose(); nrtReader.Dispose(); @@ -284,16 +284,16 @@ namespace Lucene.Net.Index writer2.Dispose(); DirectoryReader r0 = writer.GetReader(); - Assert.IsTrue(r0.IsCurrent); + Assert.IsTrue(r0.IsCurrent()); writer.AddIndexes(dir2); - Assert.IsFalse(r0.IsCurrent); + Assert.IsFalse(r0.IsCurrent()); r0.Dispose(); DirectoryReader r1 = writer.GetReader(); - Assert.IsTrue(r1.IsCurrent); + Assert.IsTrue(r1.IsCurrent()); writer.Commit(); - Assert.IsTrue(r1.IsCurrent); // we have seen all changes - no change after opening the NRT reader + Assert.IsTrue(r1.IsCurrent()); // we have seen all changes - no change after opening the NRT reader Assert.AreEqual(200, r1.MaxDoc); @@ -1304,13 +1304,13 @@ namespace Lucene.Net.Index DirectoryReader r3 = DirectoryReader.OpenIfChanged(r); Assert.IsNotNull(r3); Assert.IsTrue(r3.Version != r.Version); - Assert.IsTrue(r3.IsCurrent); + Assert.IsTrue(r3.IsCurrent()); // Deletes nothing in reality...: w.DeleteDocuments(new Term("foo", "bar")); // ... but IW marks this as not current: - Assert.IsFalse(r3.IsCurrent); + Assert.IsFalse(r3.IsCurrent()); DirectoryReader r4 = DirectoryReader.OpenIfChanged(r3); Assert.IsNull(r4); http://git-wip-us.apache.org/repos/asf/lucenenet/blob/85bcff30/src/Lucene.Net.Tests/Index/TestIsCurrent.cs ---------------------------------------------------------------------- diff --git a/src/Lucene.Net.Tests/Index/TestIsCurrent.cs b/src/Lucene.Net.Tests/Index/TestIsCurrent.cs index 99dfaca..a15847d 100644 --- a/src/Lucene.Net.Tests/Index/TestIsCurrent.cs +++ b/src/Lucene.Net.Tests/Index/TestIsCurrent.cs @@ -68,7 +68,7 @@ namespace Lucene.Net.Index // assert index has a document and reader is up2date Assert.AreEqual(1, Writer.NumDocs, "One document should be in the index"); - Assert.IsTrue(reader.IsCurrent, "One document added, reader should be current"); + Assert.IsTrue(reader.IsCurrent(), "One document added, reader should be current"); // remove document Term idTerm = new Term("UUID", "1"); @@ -77,7 +77,7 @@ namespace Lucene.Net.Index // assert document has been deleted (index changed), reader is stale Assert.AreEqual(0, Writer.NumDocs, "Document should be removed"); - Assert.IsFalse(reader.IsCurrent, "Reader should be stale"); + Assert.IsFalse(reader.IsCurrent(), "Reader should be stale"); reader.Dispose(); } @@ -93,7 +93,7 @@ namespace Lucene.Net.Index // assert index has a document and reader is up2date Assert.AreEqual(1, Writer.NumDocs, "One document should be in the index"); - Assert.IsTrue(reader.IsCurrent, "Document added, reader should be stale "); + Assert.IsTrue(reader.IsCurrent(), "Document added, reader should be stale "); // remove all documents Writer.DeleteAll(); @@ -101,7 +101,7 @@ namespace Lucene.Net.Index // assert document has been deleted (index changed), reader is stale Assert.AreEqual(0, Writer.NumDocs, "Document should be removed"); - Assert.IsFalse(reader.IsCurrent, "Reader should be stale"); + Assert.IsFalse(reader.IsCurrent(), "Reader should be stale"); reader.Dispose(); }
