You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2013/04/04 13:04:38 UTC
svn commit: r1464437 - in /lucene/dev/trunk: ./ lucene/ lucene/CHANGES.txt
lucene/core/
lucene/core/src/java/org/apache/lucene/index/StandardDirectoryReader.java
lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java
Author: mikemccand
Date: Thu Apr 4 11:04:38 2013
New Revision: 1464437
URL: http://svn.apache.org/r1464437
Log:
LUCENE-4898: openIfChange now allows targeting an IndexCommit from an NRT reader
Modified:
lucene/dev/trunk/ (props changed)
lucene/dev/trunk/lucene/ (props changed)
lucene/dev/trunk/lucene/CHANGES.txt (contents, props changed)
lucene/dev/trunk/lucene/core/ (props changed)
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/StandardDirectoryReader.java
lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java
Modified: lucene/dev/trunk/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/CHANGES.txt?rev=1464437&r1=1464436&r2=1464437&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/CHANGES.txt (original)
+++ lucene/dev/trunk/lucene/CHANGES.txt Thu Apr 4 11:04:38 2013
@@ -160,6 +160,10 @@ New Features
* LUCENE-4645: Added support for the "Contains" spatial predicate for
RecursivePrefixTreeStrategy. (David Smiley)
+* LUCENE-4898: DirectoryReader.openIfChanged now allows opening a reader
+ on an IndexCommit starting from a near-real-time reader (previously
+ this would throw IllegalArgumentException). (Mike McCandless)
+
Optimizations
* LUCENE-4839: SorterTemplate.merge can now be overridden in order to replace
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/StandardDirectoryReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/StandardDirectoryReader.java?rev=1464437&r1=1464436&r2=1464437&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/StandardDirectoryReader.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/StandardDirectoryReader.java Thu Apr 4 11:04:38 2013
@@ -260,7 +260,7 @@ final class StandardDirectoryReader exte
private DirectoryReader doOpenFromWriter(IndexCommit commit) throws IOException {
if (commit != null) {
- throw new IllegalArgumentException("a reader obtained from IndexWriter.getReader() cannot currently accept a commit");
+ return doOpenFromCommit(commit);
}
if (writer.nrtIsCurrent(segmentInfos)) {
@@ -293,6 +293,10 @@ final class StandardDirectoryReader exte
}
}
+ return doOpenFromCommit(commit);
+ }
+
+ private DirectoryReader doOpenFromCommit(IndexCommit commit) throws IOException {
return (DirectoryReader) new SegmentInfos.FindSegmentsFile(directory) {
@Override
protected Object doBody(String segmentFileName) throws IOException {
Modified: lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java?rev=1464437&r1=1464436&r2=1464437&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java (original)
+++ lucene/dev/trunk/lucene/core/src/test/org/apache/lucene/index/TestDirectoryReaderReopen.java Thu Apr 4 11:04:38 2013
@@ -594,4 +594,28 @@ public class TestDirectoryReaderReopen e
r.close();
dir.close();
}
+
+ public void testOpenIfChangedNRTToCommit() throws Exception {
+ Directory dir = newDirectory();
+
+ // Can't use RIW because it randomly commits:
+ IndexWriter w = new IndexWriter(dir, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random())));
+ Document doc = new Document();
+ doc.add(newStringField("field", "value", Field.Store.NO));
+ w.addDocument(doc);
+ w.commit();
+ List<IndexCommit> commits = DirectoryReader.listCommits(dir);
+ assertEquals(1, commits.size());
+ w.addDocument(doc);
+ DirectoryReader r = DirectoryReader.open(w, true);
+
+ assertEquals(2, r.numDocs());
+ IndexReader r2 = DirectoryReader.openIfChanged(r, commits.get(0));
+ assertNotNull(r2);
+ r.close();
+ assertEquals(1, r2.numDocs());
+ w.close();
+ r2.close();
+ dir.close();
+ }
}