You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2011/04/01 12:54:46 UTC
svn commit: r1087647 - in /lucene/dev/branches/lucene_solr_3_1/lucene:
CHANGES.txt src/java/org/apache/lucene/index/IndexWriter.java
src/test/org/apache/lucene/index/TestAddIndexes.java
Author: shaie
Date: Fri Apr 1 10:54:46 2011
New Revision: 1087647
URL: http://svn.apache.org/viewvc?rev=1087647&view=rev
Log:
LUCENE-2996: addIndexes(IndexReader) does not flush before adding the new indexes, and as a consequence, deletes are applied on the incoming indexes too
Modified:
lucene/dev/branches/lucene_solr_3_1/lucene/CHANGES.txt
lucene/dev/branches/lucene_solr_3_1/lucene/src/java/org/apache/lucene/index/IndexWriter.java
lucene/dev/branches/lucene_solr_3_1/lucene/src/test/org/apache/lucene/index/TestAddIndexes.java
Modified: lucene/dev/branches/lucene_solr_3_1/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_3_1/lucene/CHANGES.txt?rev=1087647&r1=1087646&r2=1087647&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_3_1/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/lucene_solr_3_1/lucene/CHANGES.txt Fri Apr 1 10:54:46 2011
@@ -1,5 +1,13 @@
Lucene Change Log
+======================= Lucene 3.1.x (not yet released) =======================
+
+Bug fixes
+
+* LUCENE-2996: addIndexes(IndexReader) did not flush before adding the new
+ indexes, causing existing deletions to be applied on the incoming indexes as
+ well. (Shai Erera, Mike McCandless)
+
======================= Lucene 3.1.0 =======================
Changes in backwards compatibility policy
Modified: lucene/dev/branches/lucene_solr_3_1/lucene/src/java/org/apache/lucene/index/IndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_3_1/lucene/src/java/org/apache/lucene/index/IndexWriter.java?rev=1087647&r1=1087646&r2=1087647&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_3_1/lucene/src/java/org/apache/lucene/index/IndexWriter.java (original)
+++ lucene/dev/branches/lucene_solr_3_1/lucene/src/java/org/apache/lucene/index/IndexWriter.java Fri Apr 1 10:54:46 2011
@@ -2913,6 +2913,10 @@ public class IndexWriter implements Clos
ensureOpen();
try {
+ if (infoStream != null)
+ message("flush at addIndexes(IndexReader...)");
+ flush(false, true);
+
String mergedName = newSegmentName();
SegmentMerger merger = new SegmentMerger(directory, config.getTermIndexInterval(),
mergedName, null, payloadProcessorProvider,
Modified: lucene/dev/branches/lucene_solr_3_1/lucene/src/test/org/apache/lucene/index/TestAddIndexes.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_3_1/lucene/src/test/org/apache/lucene/index/TestAddIndexes.java?rev=1087647&r1=1087646&r2=1087647&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_3_1/lucene/src/test/org/apache/lucene/index/TestAddIndexes.java (original)
+++ lucene/dev/branches/lucene_solr_3_1/lucene/src/test/org/apache/lucene/index/TestAddIndexes.java Fri Apr 1 10:54:46 2011
@@ -911,5 +911,39 @@ public class TestAddIndexes extends Luce
assertEquals("Only one compound segment should exist", 3, dir.listAll().length);
}
+
+ // LUCENE-2996: tests that addIndexes(IndexReader) applies existing deletes correctly.
+ public void testExistingDeletes() throws Exception {
+ Directory[] dirs = new Directory[2];
+ for (int i = 0; i < dirs.length; i++) {
+ dirs[i] = newDirectory();
+ IndexWriterConfig conf = newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer());
+ IndexWriter writer = new IndexWriter(dirs[i], conf);
+ Document doc = new Document();
+ doc.add(new Field("id", "myid", Store.NO, Index.NOT_ANALYZED_NO_NORMS));
+ writer.addDocument(doc);
+ writer.close();
+ }
+
+ IndexWriterConfig conf = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer());
+ IndexWriter writer = new IndexWriter(dirs[0], conf);
+
+ // Now delete the document
+ writer.deleteDocuments(new Term("id", "myid"));
+ IndexReader r = IndexReader.open(dirs[1]);
+ try {
+ writer.addIndexes(r);
+ } finally {
+ r.close();
+ }
+ writer.commit();
+ assertEquals("Documents from the incoming index should not have been deleted", 1, writer.numDocs());
+ writer.close();
+
+ for (Directory dir : dirs) {
+ dir.close();
+ }
+
+ }
}