You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@lucene.apache.org by mi...@apache.org on 2010/10/29 20:38:19 UTC
svn commit: r1028873 - in /lucene/java/branches/lucene_3_0: ./ contrib/
contrib/analyzers/ contrib/analyzers/common/
contrib/analyzers/common/src/test/ contrib/analyzers/smartcn/
contrib/highlighter/ contrib/highlighter/src/test/ contrib/instantiated/s...
Author: mikemccand
Date: Fri Oct 29 18:38:18 2010
New Revision: 1028873
URL: http://svn.apache.org/viewvc?rev=1028873&view=rev
Log:
LUCENE-2513: don't overwrite future commits when opening past commit in writeable IndexReader
Modified:
lucene/java/branches/lucene_3_0/ (props changed)
lucene/java/branches/lucene_3_0/CHANGES.txt (contents, props changed)
lucene/java/branches/lucene_3_0/build.xml (props changed)
lucene/java/branches/lucene_3_0/contrib/ (props changed)
lucene/java/branches/lucene_3_0/contrib/CHANGES.txt (props changed)
lucene/java/branches/lucene_3_0/contrib/analyzers/ (props changed)
lucene/java/branches/lucene_3_0/contrib/analyzers/common/ (props changed)
lucene/java/branches/lucene_3_0/contrib/analyzers/common/src/test/ (props changed)
lucene/java/branches/lucene_3_0/contrib/analyzers/smartcn/ (props changed)
lucene/java/branches/lucene_3_0/contrib/highlighter/ (props changed)
lucene/java/branches/lucene_3_0/contrib/highlighter/src/test/ (props changed)
lucene/java/branches/lucene_3_0/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestIndicesEquals.java (props changed)
lucene/java/branches/lucene_3_0/src/ (props changed)
lucene/java/branches/lucene_3_0/src/java/org/apache/lucene/analysis/BaseCharFilter.java (props changed)
lucene/java/branches/lucene_3_0/src/java/org/apache/lucene/analysis/Tokenizer.java (props changed)
lucene/java/branches/lucene_3_0/src/java/org/apache/lucene/index/DirectoryReader.java
lucene/java/branches/lucene_3_0/src/java/org/apache/lucene/index/IndexFileDeleter.java
lucene/java/branches/lucene_3_0/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java (props changed)
lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/analysis/TestISOLatin1AccentFilter.java (props changed)
lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/document/TestDateTools.java (props changed)
lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/document/TestNumberTools.java (props changed)
lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/index/ (props changed)
lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java (props changed)
lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/index/TestIndexWriter.java
lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java (props changed)
lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java (props changed)
lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/search/spans/TestSpans.java (props changed)
lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/util/TestAttributeSource.java (props changed)
Propchange: lucene/java/branches/lucene_3_0/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,5 +1,5 @@
-/lucene/dev/branches/branch_3x/lucene:941394,946651,948430,957490,984210,988629,990286,999226,999847
-/lucene/dev/trunk/lucene:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,963781,965103,984187,989785,990281,994979,999223,999842
+/lucene/dev/branches/branch_3x/lucene:941394,946651,948430,957490,957920,984210,988629,990286,999226,999847
+/lucene/dev/trunk/lucene:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,957707,963781,965103,984187,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_4:748824
/lucene/java/branches/lucene_2_9:817269-818600,825998,829134,829881,831036,896850,909334,940987,948516,1028833,1028850
/lucene/java/branches/lucene_2_9_back_compat_tests:818601-821336
Modified: lucene/java/branches/lucene_3_0/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/java/branches/lucene_3_0/CHANGES.txt?rev=1028873&r1=1028872&r2=1028873&view=diff
==============================================================================
--- lucene/java/branches/lucene_3_0/CHANGES.txt (original)
+++ lucene/java/branches/lucene_3_0/CHANGES.txt Fri Oct 29 18:38:18 2010
@@ -15,6 +15,9 @@ Bug fixes
throws an exception when term count exceeds doc count.
(Mike McCandless, Uwe Schindler)
+* LUCENE-2513: when opening writable IndexReader on a not-current
+ commit, do not overwrite "future" commits. (Mike McCandless)
+
* LUCENE-2536: IndexWriter.rollback was failing to properly rollback
buffered deletions against segments that were flushed (Mark Harwood
via Mike McCandless)
Propchange: lucene/java/branches/lucene_3_0/CHANGES.txt
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,5 +1,5 @@
-/lucene/dev/branches/branch_3x/lucene/CHANGES.txt:941394,946651,948430,957490,984210,999847
-/lucene/dev/trunk/lucene/CHANGES.txt:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,963781,965103,984187,989785,994979,999842
+/lucene/dev/branches/branch_3x/lucene/CHANGES.txt:941394,946651,948430,957490,957920,984210,999847
+/lucene/dev/trunk/lucene/CHANGES.txt:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,957707,963781,965103,984187,989785,994979,999842
/lucene/java/branches/lucene_2_4/CHANGES.txt:748824
/lucene/java/branches/lucene_2_9/CHANGES.txt:817269-818600,825998,829134,829881,831036,896850,909334,940987,948516,1028833,1028850
/lucene/java/branches/lucene_2_9_back_compat_tests/CHANGES.txt:818601-821336
Propchange: lucene/java/branches/lucene_3_0/build.xml
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,5 +1,5 @@
-/lucene/dev/branches/branch_3x/lucene/build.xml:941394,946651,948430,957490,984210,988629,990286,999226,999847
-/lucene/dev/trunk/lucene/build.xml:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,963781,965103,984187,989785,990281,994979,999223,999842
+/lucene/dev/branches/branch_3x/lucene/build.xml:941394,946651,948430,957490,957920,984210,988629,990286,999226,999847
+/lucene/dev/trunk/lucene/build.xml:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,957707,963781,965103,984187,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_4/build.xml:748824
/lucene/java/branches/lucene_2_9/build.xml:817269-818600,825998,829134,829881,831036,896850,909334,940987,948516,1028833,1028850
/lucene/java/branches/lucene_2_9_back_compat_tests/build.xml:818601-821336
Propchange: lucene/java/branches/lucene_3_0/contrib/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,5 +1,5 @@
-/lucene/dev/branches/branch_3x/lucene/contrib:941394,946651,948430,957490,984210,988629,990286,999226,999847
-/lucene/dev/trunk/lucene/contrib:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,963781,965103,984187,989785,990281,994979,999223,999842
+/lucene/dev/branches/branch_3x/lucene/contrib:941394,946651,948430,957490,957920,984210,988629,990286,999226,999847
+/lucene/dev/trunk/lucene/contrib:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,957707,963781,965103,984187,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_4/contrib:748824
/lucene/java/branches/lucene_2_9/contrib:817269-818600,825998,829134,829816,829881,831036,896850,909334,940987,948516,1028833,1028850
/lucene/java/branches/lucene_2_9_back_compat_tests/contrib:818601-821336
Propchange: lucene/java/branches/lucene_3_0/contrib/CHANGES.txt
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,5 +1,5 @@
-/lucene/dev/branches/branch_3x/lucene/contrib/CHANGES.txt:941394,946651,948430,957490,984210,988629,990286,999226,999847
-/lucene/dev/trunk/lucene/contrib/CHANGES.txt:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,963781,965103,984187,989785,990281,994979,999223,999842
+/lucene/dev/branches/branch_3x/lucene/contrib/CHANGES.txt:941394,946651,948430,957490,957920,984210,988629,990286,999226,999847
+/lucene/dev/trunk/lucene/contrib/CHANGES.txt:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,957707,963781,965103,984187,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_4/contrib/CHANGES.txt:748824
/lucene/java/branches/lucene_2_9/contrib/CHANGES.txt:817269-818600,825998,826775,829134,829816,829881,831036,896850,909334,940987,948516,1028833,1028850
/lucene/java/branches/lucene_2_9_back_compat_tests/contrib/CHANGES.txt:818601-821336
Propchange: lucene/java/branches/lucene_3_0/contrib/analyzers/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,4 +1,4 @@
-/lucene/dev/branches/branch_3x/lucene/contrib/analyzers:941394,946651,957490,984210,988629,990286,999226,999847
-/lucene/dev/trunk/lucene/contrib/analyzers:929738,935522,939611,940730,948429,949288,949976,949997,950458,950613,951521,963781,965103,984187,989785,990281,994979,999223,999842
+/lucene/dev/branches/branch_3x/lucene/contrib/analyzers:941394,946651,957490,957920,984210,988629,990286,999226,999847
+/lucene/dev/trunk/lucene/contrib/analyzers:929738,935522,939611,940730,948429,949288,949976,949997,950458,950613,951521,957707,963781,965103,984187,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_9/contrib/analyzers:1028833,1028850
/lucene/java/trunk/contrib/analyzers:887670,889579,889866,890439,891205,891377,916543,919869,920270
Propchange: lucene/java/branches/lucene_3_0/contrib/analyzers/common/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,4 +1,4 @@
-/lucene/dev/branches/branch_3x/lucene/contrib/analyzers/common:988629,990286,999226,999847
-/lucene/dev/trunk/lucene/contrib/analyzers/common:984187,989785,990281,994979,999223,999842
+/lucene/dev/branches/branch_3x/lucene/contrib/analyzers/common:957920,988629,990286,999226,999847
+/lucene/dev/trunk/lucene/contrib/analyzers/common:957707,984187,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_9/contrib/analyzers/common:1028833,1028850
/lucene/java/trunk/contrib/analyzers/common:916543,919869
Propchange: lucene/java/branches/lucene_3_0/contrib/analyzers/common/src/test/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,4 +1,4 @@
-/lucene/dev/branches/branch_3x/lucene/contrib/analyzers/common/src/test:999226,999847
-/lucene/dev/trunk/lucene/contrib/analyzers/common/src/test:989785,990281,994979,999223,999842
+/lucene/dev/branches/branch_3x/lucene/contrib/analyzers/common/src/test:957920,999226,999847
+/lucene/dev/trunk/lucene/contrib/analyzers/common/src/test:957707,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_9/contrib/analyzers/common/src/test:1028833,1028850
/lucene/java/trunk/contrib/analyzers/common/src/test:916543,919869
Propchange: lucene/java/branches/lucene_3_0/contrib/analyzers/smartcn/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,4 +1,4 @@
-/lucene/dev/branches/branch_3x/lucene/contrib/analyzers/smartcn:988629,990286,999226,999847
-/lucene/dev/trunk/lucene/contrib/analyzers/smartcn:984187,989785,990281,994979,999223,999842
+/lucene/dev/branches/branch_3x/lucene/contrib/analyzers/smartcn:957920,988629,990286,999226,999847
+/lucene/dev/trunk/lucene/contrib/analyzers/smartcn:957707,984187,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_9/contrib/analyzers/smartcn:1028833,1028850
/lucene/java/trunk/contrib/analyzers/smartcn:916543,919869
Propchange: lucene/java/branches/lucene_3_0/contrib/highlighter/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,4 +1,4 @@
-/lucene/dev/branches/branch_3x/lucene/contrib/highlighter:988629,990286,999226,999847
+/lucene/dev/branches/branch_3x/lucene/contrib/highlighter:957920,988629,990286,999226,999847
/lucene/dev/trunk/lucene/contrib/highlighter:984187,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_9/contrib/highlighter:1028833,1028850
/lucene/java/trunk/contrib/highlighter:916543,919869
Propchange: lucene/java/branches/lucene_3_0/contrib/highlighter/src/test/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,5 +1,5 @@
-/lucene/dev/branches/branch_3x/lucene/contrib/highlighter/src/test:941394,946651,948430,957490,984210,988629,990286,999226,999847
-/lucene/dev/trunk/lucene/contrib/highlighter/src/test:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,963781,965103,984187,989785,990281,994979,999223,999842
+/lucene/dev/branches/branch_3x/lucene/contrib/highlighter/src/test:941394,946651,948430,957490,957920,984210,988629,990286,999226,999847
+/lucene/dev/trunk/lucene/contrib/highlighter/src/test:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,957707,963781,965103,984187,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_4/contrib/highlighter/src/test:748824
/lucene/java/branches/lucene_2_9/contrib/highlighter/src/test:817269-818600,825998,826775,829134,829816,829881,831036,896850,909334,940987,948516,1028833,1028850
/lucene/java/branches/lucene_2_9_back_compat_tests/contrib/highlighter/src/test:818601-821336
Propchange: lucene/java/branches/lucene_3_0/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestIndicesEquals.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,5 +1,5 @@
-/lucene/dev/branches/branch_3x/lucene/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestIndicesEquals.java:941394,946651,948430,957490,984210,988629,990286,999226,999847
-/lucene/dev/trunk/lucene/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestIndicesEquals.java:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,963781,965103,984187,989785,990281,994979,999223,999842
+/lucene/dev/branches/branch_3x/lucene/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestIndicesEquals.java:941394,946651,948430,957490,957920,984210,988629,990286,999226,999847
+/lucene/dev/trunk/lucene/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestIndicesEquals.java:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,957707,963781,965103,984187,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_4/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestIndicesEquals.java:748824
/lucene/java/branches/lucene_2_9/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestIndicesEquals.java:817269-818600,825998,829134,829816,829881,831036,896850,909334,940987,948516,1028833,1028850
/lucene/java/branches/lucene_2_9_back_compat_tests/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestIndicesEquals.java:818601-821336
Propchange: lucene/java/branches/lucene_3_0/src/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,5 +1,5 @@
-/lucene/dev/branches/branch_3x/lucene/src:941394,946651,948430,957490,984210,988629,990286,999226,999847
-/lucene/dev/trunk/lucene/src:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,953407,963781,965103,984187,989785,990281,994979,999223,999842
+/lucene/dev/branches/branch_3x/lucene/src:941394,946651,948430,957490,957920,984210,988629,990286,999226,999847
+/lucene/dev/trunk/lucene/src:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,953407,957707,963781,965103,984187,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_4/src:748824
/lucene/java/branches/lucene_2_9/src:817269-818600,825998,829134,829881,831036,896850,909334,940987,948516,1028833,1028850
/lucene/java/branches/lucene_2_9_back_compat_tests/src:818601-821336
Propchange: lucene/java/branches/lucene_3_0/src/java/org/apache/lucene/analysis/BaseCharFilter.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,2 +1,3 @@
+/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/analysis/BaseCharFilter.java:957920
/lucene/dev/trunk/lucene/src/java/org/apache/lucene/analysis/BaseCharFilter.java:999842
/lucene/java/branches/lucene_2_9/src/java/org/apache/lucene/analysis/BaseCharFilter.java:1028850
Propchange: lucene/java/branches/lucene_3_0/src/java/org/apache/lucene/analysis/Tokenizer.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,5 +1,5 @@
-/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/analysis/Tokenizer.java:941394,946651,948430,957490,984210,988629,990286,999226,999847
-/lucene/dev/trunk/lucene/src/java/org/apache/lucene/analysis/Tokenizer.java:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,953407,963781,965103,984187,989785,990281,994979,999223,999842
+/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/analysis/Tokenizer.java:941394,946651,948430,957490,957920,984210,988629,990286,999226,999847
+/lucene/dev/trunk/lucene/src/java/org/apache/lucene/analysis/Tokenizer.java:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,953407,957707,963781,965103,984187,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_4/src/java/org/apache/lucene/analysis/Tokenizer.java:748824
/lucene/java/branches/lucene_2_9/src/java/org/apache/lucene/analysis/Tokenizer.java:817269-818600,825998,829134,829881,831036,896850,909334,940987,948516,1028833,1028850
/lucene/java/branches/lucene_2_9_back_compat_tests/src/java/org/apache/lucene/analysis/Tokenizer.java:818601-821336
Modified: lucene/java/branches/lucene_3_0/src/java/org/apache/lucene/index/DirectoryReader.java
URL: http://svn.apache.org/viewvc/lucene/java/branches/lucene_3_0/src/java/org/apache/lucene/index/DirectoryReader.java?rev=1028873&r1=1028872&r2=1028873&view=diff
==============================================================================
--- lucene/java/branches/lucene_3_0/src/java/org/apache/lucene/index/DirectoryReader.java (original)
+++ lucene/java/branches/lucene_3_0/src/java/org/apache/lucene/index/DirectoryReader.java Fri Oct 29 18:38:18 2010
@@ -63,6 +63,11 @@ class DirectoryReader extends IndexReade
private int numDocs = -1;
private boolean hasDeletions = false;
+ // Max version in index as of when we opened; this can be
+ // > our current segmentInfos version in case we were
+ // opened on a past IndexCommit:
+ private long maxIndexVersion;
+
static IndexReader open(final Directory directory, final IndexDeletionPolicy deletionPolicy, final IndexCommit commit, final boolean readOnly,
final int termInfosIndexDivisor) throws CorruptIndexException, IOException {
return (IndexReader) new SegmentInfos.FindSegmentsFile(directory) {
@@ -298,7 +303,7 @@ class DirectoryReader extends IndexReade
}
}
- private void initialize(SegmentReader[] subReaders) {
+ private void initialize(SegmentReader[] subReaders) throws IOException {
this.subReaders = subReaders;
starts = new int[subReaders.length + 1]; // build starts array
for (int i = 0; i < subReaders.length; i++) {
@@ -309,6 +314,10 @@ class DirectoryReader extends IndexReade
hasDeletions = true;
}
starts[subReaders.length] = maxDoc;
+
+ if (!readOnly) {
+ maxIndexVersion = SegmentInfos.readCurrentVersion(directory);
+ }
}
@Override
@@ -696,8 +705,9 @@ class DirectoryReader extends IndexReade
this.writeLock = writeLock;
// we have to check whether index has changed since this reader was opened.
- // if so, this reader is no longer valid for deletion
- if (SegmentInfos.readCurrentVersion(directory) > segmentInfos.getVersion()) {
+ // if so, this reader is no longer valid for
+ // deletion
+ if (SegmentInfos.readCurrentVersion(directory) > maxIndexVersion) {
stale = true;
this.writeLock.release();
this.writeLock = null;
@@ -724,6 +734,7 @@ class DirectoryReader extends IndexReade
IndexFileDeleter deleter = new IndexFileDeleter(directory,
deletionPolicy == null ? new KeepOnlyLastCommitDeletionPolicy() : deletionPolicy,
segmentInfos, null, null);
+ segmentInfos.updateGeneration(deleter.getLastSegmentInfos());
// Checkpoint the state we are about to change, in
// case we have to roll back:
@@ -769,6 +780,8 @@ class DirectoryReader extends IndexReade
deleter.checkpoint(segmentInfos, true);
deleter.close();
+ maxIndexVersion = segmentInfos.getVersion();
+
if (writeLock != null) {
writeLock.release(); // release write lock
writeLock = null;
Modified: lucene/java/branches/lucene_3_0/src/java/org/apache/lucene/index/IndexFileDeleter.java
URL: http://svn.apache.org/viewvc/lucene/java/branches/lucene_3_0/src/java/org/apache/lucene/index/IndexFileDeleter.java?rev=1028873&r1=1028872&r2=1028873&view=diff
==============================================================================
--- lucene/java/branches/lucene_3_0/src/java/org/apache/lucene/index/IndexFileDeleter.java (original)
+++ lucene/java/branches/lucene_3_0/src/java/org/apache/lucene/index/IndexFileDeleter.java Fri Oct 29 18:38:18 2010
@@ -99,6 +99,7 @@ final class IndexFileDeleter {
private DocumentsWriter docWriter;
final boolean startingCommitDeleted;
+ private SegmentInfos lastSegmentInfos;
/** Change to true to see details of reference counts when
* infoStream != null */
@@ -157,33 +158,44 @@ final class IndexFileDeleter {
// This is a commit (segments or segments_N), and
// it's valid (<= the max gen). Load it, then
// incref all files it refers to:
- if (SegmentInfos.generationFromSegmentsFileName(fileName) <= currentGen) {
+ if (infoStream != null) {
+ message("init: load commit \"" + fileName + "\"");
+ }
+ SegmentInfos sis = new SegmentInfos();
+ try {
+ sis.read(directory, fileName);
+ } catch (FileNotFoundException e) {
+ // LUCENE-948: on NFS (and maybe others), if
+ // you have writers switching back and forth
+ // between machines, it's very likely that the
+ // dir listing will be stale and will claim a
+ // file segments_X exists when in fact it
+ // doesn't. So, we catch this and handle it
+ // as if the file does not exist
if (infoStream != null) {
- message("init: load commit \"" + fileName + "\"");
+ message("init: hit FileNotFoundException when loading commit \"" + fileName + "\"; skipping this commit point");
}
- SegmentInfos sis = new SegmentInfos();
- try {
- sis.read(directory, fileName);
- } catch (FileNotFoundException e) {
- // LUCENE-948: on NFS (and maybe others), if
- // you have writers switching back and forth
- // between machines, it's very likely that the
- // dir listing will be stale and will claim a
- // file segments_X exists when in fact it
- // doesn't. So, we catch this and handle it
- // as if the file does not exist
- if (infoStream != null) {
- message("init: hit FileNotFoundException when loading commit \"" + fileName + "\"; skipping this commit point");
- }
+ sis = null;
+ } catch (IOException e) {
+ if (SegmentInfos.generationFromSegmentsFileName(fileName) <= currentGen) {
+ throw e;
+ } else {
+ // Most likely we are opening an index that
+ // has an aborted "future" commit, so suppress
+ // exc in this case
sis = null;
}
- if (sis != null) {
- CommitPoint commitPoint = new CommitPoint(commitsToDelete, directory, sis);
- if (sis.getGeneration() == segmentInfos.getGeneration()) {
- currentCommitPoint = commitPoint;
- }
- commits.add(commitPoint);
- incRef(sis, true);
+ }
+ if (sis != null) {
+ CommitPoint commitPoint = new CommitPoint(commitsToDelete, directory, sis);
+ if (sis.getGeneration() == segmentInfos.getGeneration()) {
+ currentCommitPoint = commitPoint;
+ }
+ commits.add(commitPoint);
+ incRef(sis, true);
+
+ if (lastSegmentInfos == null || sis.getGeneration() > lastSegmentInfos.getGeneration()) {
+ lastSegmentInfos = sis;
}
}
}
@@ -241,6 +253,10 @@ final class IndexFileDeleter {
deleteCommits();
}
+ public SegmentInfos getLastSegmentInfos() {
+ return lastSegmentInfos;
+ }
+
/**
* Remove the CommitPoints in the commitsToDelete List by
* DecRef'ing all files from each SegmentInfos.
Propchange: lucene/java/branches/lucene_3_0/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,5 +1,5 @@
-/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java:941394,946651,948430,957490,984210,988629,990286,999226,999847
-/lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,953407,963781,965103,984187,989785,990281,994979,999223,999842
+/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java:941394,946651,948430,957490,957920,984210,988629,990286,999226,999847
+/lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,953407,957707,963781,965103,984187,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_4/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java:748824
/lucene/java/branches/lucene_2_9/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java:817269-818600,825998,829134,829881,831036,896850,909334,940987,948516,1028833,1028850
/lucene/java/branches/lucene_2_9_back_compat_tests/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java:818601-821336
Propchange: lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/analysis/TestISOLatin1AccentFilter.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,5 +1,5 @@
-/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/analysis/TestISOLatin1AccentFilter.java:941394,946651,948430,957490,984210,988629,990286,999226,999847
-/lucene/dev/trunk/lucene/src/test/org/apache/lucene/analysis/TestISOLatin1AccentFilter.java:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,953407,963781,965103,984187,989785,990281,994979,999223,999842
+/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/analysis/TestISOLatin1AccentFilter.java:941394,946651,948430,957490,957920,984210,988629,990286,999226,999847
+/lucene/dev/trunk/lucene/src/test/org/apache/lucene/analysis/TestISOLatin1AccentFilter.java:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,953407,957707,963781,965103,984187,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_4/src/test/org/apache/lucene/analysis/TestISOLatin1AccentFilter.java:748824
/lucene/java/branches/lucene_2_9/src/test/org/apache/lucene/analysis/TestISOLatin1AccentFilter.java:825998,829134,829881,831036,896850,909334,940987,948516,1028833,1028850
/lucene/java/trunk/src/test/org/apache/lucene/analysis/TestISOLatin1AccentFilter.java:881213,881315,881466,881819,882374,882672,882807,882888,882977,883074-883075,883554,884870,886257,886911,887347,887532,887602,887670,888247,889431-889432,889579,889866,890439,890967,890988,891189,891205,891209,891363,891377,893093,894348,897672,899627,900196,908477,908975,909360,909398,910034,910078,912407,915399,916543,919060,919869,920270
Propchange: lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/document/TestDateTools.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,5 +1,5 @@
-/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/document/TestDateTools.java:941394,946651,948430,957490,984210,988629,990286,999226,999847
-/lucene/dev/trunk/lucene/src/test/org/apache/lucene/document/TestDateTools.java:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,953407,963781,965103,984187,989785,990281,994979,999223,999842
+/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/document/TestDateTools.java:941394,946651,948430,957490,957920,984210,988629,990286,999226,999847
+/lucene/dev/trunk/lucene/src/test/org/apache/lucene/document/TestDateTools.java:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,953407,957707,963781,965103,984187,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_4/src/test/org/apache/lucene/document/TestDateTools.java:748824
/lucene/java/branches/lucene_2_9/src/test/org/apache/lucene/document/TestDateTools.java:825998,829134,829881,831036,896850,909334,940987,948516,1028833,1028850
/lucene/java/trunk/src/test/org/apache/lucene/document/TestDateTools.java:881213,881315,881466,881819,882374,882672,882807,882888,882977,883074-883075,883554,884870,886257,886911,887347,887532,887602,887670,888247,889431-889432,889579,889866,890439,890967,890988,891189,891205,891209,891363,891377,893093,894348,897672,899627,900196,908477,908975,909360,909398,910034,910078,912407,915399,916543,919060,919869,920270
Propchange: lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/document/TestNumberTools.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,5 +1,5 @@
-/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/document/TestNumberTools.java:941394,946651,948430,957490,984210,988629,990286,999226,999847
-/lucene/dev/trunk/lucene/src/test/org/apache/lucene/document/TestNumberTools.java:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,953407,963781,965103,984187,989785,990281,994979,999223,999842
+/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/document/TestNumberTools.java:941394,946651,948430,957490,957920,984210,988629,990286,999226,999847
+/lucene/dev/trunk/lucene/src/test/org/apache/lucene/document/TestNumberTools.java:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,953407,957707,963781,965103,984187,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_4/src/test/org/apache/lucene/document/TestNumberTools.java:748824
/lucene/java/branches/lucene_2_9/src/test/org/apache/lucene/document/TestNumberTools.java:825998,829134,829881,831036,896850,909334,940987,948516,1028833,1028850
/lucene/java/trunk/src/test/org/apache/lucene/document/TestNumberTools.java:881213,881315,881466,881819,882374,882672,882807,882888,882977,883074-883075,883554,884870,886257,886911,887347,887532,887602,887670,888247,889431-889432,889579,889866,890439,890967,890988,891189,891205,891209,891363,891377,893093,894348,897672,899627,900196,908477,908975,909360,909398,910034,910078,912407,915399,916543,919060,919869,920270
Propchange: lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/index/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,4 +1,4 @@
-/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index:941394,946651,957490,984210,988629,990286,999226,999847
-/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index:929738,935522,940730,948429,949288,949976,949997,950458,950613,951521,953407,963781,965103,984187,989785,990281,994979,999223,999842
+/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index:941394,946651,957490,957920,984210,988629,990286,999226,999847
+/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index:929738,935522,940730,948429,949288,949976,949997,950458,950613,951521,953407,957707,963781,965103,984187,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_9/src/test/org/apache/lucene/index:1028833,1028850
/lucene/java/trunk/src/test/org/apache/lucene/index:887670,889579,889866,890439,891205,891377,916543,919869,920270
Propchange: lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,5 +1,5 @@
-/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java:941394,946651,948430,957490,984210,988629,990286,999226,999847
-/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,953407,963781,965103,984187,989785,990281,994979,999223,999842
+/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java:941394,946651,948430,957490,957920,984210,988629,990286,999226,999847
+/lucene/dev/trunk/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,953407,957707,963781,965103,984187,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_4/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java:748824
/lucene/java/branches/lucene_2_9/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java:825998,829134,829881,831036,896850,909334,940987,948516,1028833,1028850
/lucene/java/trunk/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java:881213,881315,881466,881819,882374,882672,882807,882888,882977,883074-883075,883554,884870,886257,886911,887347,887532,887602,887670,888247,889431-889432,889579,889866,890439,890967,890988,891189,891205,891209,891363,891377,893093,894348,897672,899627,900196,908477,908975,909360,909398,910034,910078,912407,915399,916543,919060,919869,920270
Modified: lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/index/TestIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/index/TestIndexWriter.java?rev=1028873&r1=1028872&r2=1028873&view=diff
==============================================================================
--- lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/index/TestIndexWriter.java (original)
+++ lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/index/TestIndexWriter.java Fri Oct 29 18:38:18 2010
@@ -800,6 +800,7 @@ public class TestIndexWriter extends Luc
try {
writer = new IndexWriter(dir, new WhitespaceAnalyzer(), true, IndexWriter.MaxFieldLength.LIMITED);
} catch (Exception e) {
+ e.printStackTrace(System.out);
fail("writer failed to open on a crashed index");
}
@@ -4734,4 +4735,90 @@ public class TestIndexWriter extends Luc
_TestUtil.checkIndex(dir);
dir.close();
}
+
+ private static class NoDeletionPolicy implements IndexDeletionPolicy {
+ public void onCommit(List<? extends IndexCommit> commits) throws IOException {
+ }
+ public void onInit(List<? extends IndexCommit> commits) throws IOException {
+ }
+ }
+
+ public void testFutureCommit() throws Exception {
+ Directory dir = new MockRAMDirectory();
+
+ IndexWriter w = new IndexWriter(dir, new WhitespaceAnalyzer(), new NoDeletionPolicy(), IndexWriter.MaxFieldLength.UNLIMITED);
+ Document doc = new Document();
+ w.addDocument(doc);
+
+ // commit to "first"
+ Map<String,String> commitData = new HashMap<String,String>();
+ commitData.put("tag", "first");
+ w.commit(commitData);
+
+ // commit to "second"
+ w.addDocument(doc);
+ commitData.put("tag", "second");
+ w.commit(commitData);
+ w.close();
+
+ // open "first" with IndexWriter
+ IndexCommit commit = null;
+ for(IndexCommit c : IndexReader.listCommits(dir)) {
+ final String tag = c.getUserData().get("tag");
+ if ("first".equals(tag)) {
+ commit = c;
+ break;
+ }
+ }
+
+ assertNotNull(commit);
+
+ w = new IndexWriter(dir, new WhitespaceAnalyzer(), new NoDeletionPolicy(), IndexWriter.MaxFieldLength.UNLIMITED, commit);
+
+ assertEquals(1, w.numDocs());
+
+ // commit IndexWriter to "third"
+ w.addDocument(doc);
+ commitData.put("tag", "third");
+ w.commit(commitData);
+ w.close();
+
+ // make sure "second" commit is still there
+ commit = null;
+ for(IndexCommit c : IndexReader.listCommits(dir)) {
+ final String tag = c.getUserData().get("tag");
+ if ("second".equals(tag)) {
+ commit = c;
+ break;
+ }
+ }
+
+ assertNotNull(commit);
+
+ IndexReader r = IndexReader.open(commit, true);
+ assertEquals(2, r.numDocs());
+ r.close();
+
+ // open "second", w/ writeable IndexReader & commit
+ r = IndexReader.open(commit, new NoDeletionPolicy(), false);
+ assertEquals(2, r.numDocs());
+ r.deleteDocument(0);
+ r.deleteDocument(1);
+ commitData.put("tag", "fourth");
+ r.commit(commitData);
+ r.close();
+
+ // make sure "third" commit is still there
+ commit = null;
+ for(IndexCommit c : IndexReader.listCommits(dir)) {
+ final String tag = c.getUserData().get("tag");
+ if ("third".equals(tag)) {
+ commit = c;
+ break;
+ }
+ }
+ assertNotNull(commit);
+
+ dir.close();
+ }
}
Propchange: lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,4 +1,4 @@
-/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java:999226,999847
+/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java:957920,999226,999847
/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java:989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_9/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java:1028833,1028850
/lucene/java/trunk/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java:916543,919869
Propchange: lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,4 +1,4 @@
-/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java:999226,999847
+/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java:957920,999226,999847
/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java:989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_9/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java:1028833,1028850
/lucene/java/trunk/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java:916543,919869
Propchange: lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/search/spans/TestSpans.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,4 +1,4 @@
-/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/spans/TestSpans.java:999226,999847
+/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/spans/TestSpans.java:957920,999226,999847
/lucene/dev/trunk/lucene/src/test/org/apache/lucene/search/spans/TestSpans.java:989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_9/src/test/org/apache/lucene/search/spans/TestSpans.java:1028833,1028850
/lucene/java/trunk/src/test/org/apache/lucene/search/spans/TestSpans.java:916543,919869
Propchange: lucene/java/branches/lucene_3_0/src/test/org/apache/lucene/util/TestAttributeSource.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 29 18:38:18 2010
@@ -1,5 +1,5 @@
-/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/util/TestAttributeSource.java:941394,946651,948430,957490,984210,988629,990286,999226,999847
-/lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/TestAttributeSource.java:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,953407,963781,965103,984187,989785,990281,994979,999223,999842
+/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/util/TestAttributeSource.java:941394,946651,948430,957490,957920,984210,988629,990286,999226,999847
+/lucene/dev/trunk/lucene/src/test/org/apache/lucene/util/TestAttributeSource.java:929738,932398,935522,938989,939611,939649,940730,945420,946599,948082,948429,949288,949976,949997,950458,950613,951521,953407,957707,963781,965103,984187,989785,990281,994979,999223,999842
/lucene/java/branches/lucene_2_4/src/test/org/apache/lucene/util/TestAttributeSource.java:748824
/lucene/java/branches/lucene_2_9/src/test/org/apache/lucene/util/TestAttributeSource.java:817269-818600,825998,829134,829881,831036,896850,909334,940987,948516,1028833,1028850
/lucene/java/branches/lucene_2_9_back_compat_tests/src/test/org/apache/lucene/util/TestAttributeSource.java:818601-821336