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);
+ }
}