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 2016/07/06 13:38:48 UTC

lucene-solr:branch_6x: LUCENE-7302: IW.getMaxCompletedSequenceNumber was returning the wrong value after IW.deleteAll

Repository: lucene-solr
Updated Branches:
  refs/heads/branch_6x 6c730ab74 -> 4ff882e4a


LUCENE-7302: IW.getMaxCompletedSequenceNumber was returning the wrong value after IW.deleteAll


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/4ff882e4
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/4ff882e4
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/4ff882e4

Branch: refs/heads/branch_6x
Commit: 4ff882e4aa9cb7fc585213bca9344fa05d1bec5f
Parents: 6c730ab
Author: Mike McCandless <mi...@apache.org>
Authored: Wed Jul 6 09:29:30 2016 -0400
Committer: Mike McCandless <mi...@apache.org>
Committed: Wed Jul 6 09:29:57 2016 -0400

----------------------------------------------------------------------
 .../org/apache/lucene/index/DocumentsWriter.java     |  4 ++++
 .../java/org/apache/lucene/index/IndexWriter.java    |  7 ++++---
 .../search/TestControlledRealTimeReopenThread.java   | 15 +++++++++++++++
 3 files changed, 23 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4ff882e4/lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java b/lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java
index a33d640..2429c33 100644
--- a/lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/index/DocumentsWriter.java
@@ -148,6 +148,10 @@ final class DocumentsWriter implements Closeable, Accountable {
     return seqNo;
   }
 
+  synchronized void setLastSeqNo(long seqNo) {
+    lastSeqNo = seqNo;
+  }
+
   // TODO: we could check w/ FreqProxTermsWriter: if the
   // term doesn't exist, don't bother buffering into the
   // per-DWPT map (but still must go into the global map)

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4ff882e4/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
index f0d756b..fd25536 100644
--- a/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
+++ b/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
@@ -765,8 +765,7 @@ public class IndexWriter implements Closeable, TwoPhaseCommit, Accountable {
    * 
    * <p>
    * <b>NOTE:</b> after ths writer is created, the given configuration instance
-   * cannot be passed to another writer. If you intend to do so, you should
-   * {@link IndexWriterConfig#clone() clone} it beforehand.
+   * cannot be passed to another writer.
    * 
    * @param d
    *          the index directory. The index is either created or appended
@@ -2348,7 +2347,9 @@ public class IndexWriter implements Closeable, TwoPhaseCommit, Accountable {
             globalFieldNumberMap.clear();
 
             success = true;
-            return docWriter.deleteQueue.getNextSequenceNumber();
+            long seqNo = docWriter.deleteQueue.getNextSequenceNumber();
+            docWriter.setLastSeqNo(seqNo);
+            return seqNo;
 
           } finally {
             docWriter.unlockAllAfterAbortAll(this);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4ff882e4/lucene/core/src/test/org/apache/lucene/search/TestControlledRealTimeReopenThread.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/test/org/apache/lucene/search/TestControlledRealTimeReopenThread.java b/lucene/core/src/test/org/apache/lucene/search/TestControlledRealTimeReopenThread.java
index 779c1f2..a1b2a5c 100644
--- a/lucene/core/src/test/org/apache/lucene/search/TestControlledRealTimeReopenThread.java
+++ b/lucene/core/src/test/org/apache/lucene/search/TestControlledRealTimeReopenThread.java
@@ -534,4 +534,19 @@ public class TestControlledRealTimeReopenThread extends ThreadedIndexingAndSearc
     iw.close();
     dir.close();
   }
+
+  public void testDeleteAll() throws Exception {
+    Directory dir = newDirectory();
+    IndexWriter w = new IndexWriter(dir, newIndexWriterConfig());
+    SearcherManager mgr = new SearcherManager(w, new SearcherFactory());
+    nrtDeletesThread = new ControlledRealTimeReopenThread<>(w, mgr, 0.1, 0.01);
+    nrtDeletesThread.setName("NRTDeletes Reopen Thread");
+    nrtDeletesThread.setDaemon(true);
+    nrtDeletesThread.start();
+
+    long gen1 = w.addDocument(new Document());
+    long gen2 = w.deleteAll();
+    nrtDeletesThread.waitForGeneration(gen2);
+    IOUtils.close(nrtDeletesThread, nrtDeletes, w, dir);
+  }
 }