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 2010/11/27 20:44:45 UTC
svn commit: r1039740 - in /lucene/dev/branches/branch_3x: ./ lucene/
lucene/backwards/src/ lucene/backwards/src/test/org/apache/lucene/analysis/
lucene/backwards/src/test/org/apache/lucene/document/
lucene/backwards/src/test/org/apache/lucene/index/ lu...
Author: mikemccand
Date: Sat Nov 27 19:44:42 2010
New Revision: 1039740
URL: http://svn.apache.org/viewvc?rev=1039740&view=rev
Log:
LUCENE-2782: fix rare thread hazard with IW.commit; also make tests slightly more evil
Modified:
lucene/dev/branches/branch_3x/ (props changed)
lucene/dev/branches/branch_3x/lucene/ (props changed)
lucene/dev/branches/branch_3x/lucene/CHANGES.txt (props changed)
lucene/dev/branches/branch_3x/lucene/backwards/src/ (props changed)
lucene/dev/branches/branch_3x/lucene/backwards/src/test/org/apache/lucene/analysis/TestISOLatin1AccentFilter.java (props changed)
lucene/dev/branches/branch_3x/lucene/backwards/src/test/org/apache/lucene/document/TestDateTools.java (props changed)
lucene/dev/branches/branch_3x/lucene/backwards/src/test/org/apache/lucene/document/TestNumberTools.java (props changed)
lucene/dev/branches/branch_3x/lucene/backwards/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java (props changed)
lucene/dev/branches/branch_3x/lucene/backwards/src/test/org/apache/lucene/util/TestAttributeSource.java (props changed)
lucene/dev/branches/branch_3x/lucene/build.xml (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/ (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/CHANGES.txt (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/analyzers/ (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/analyzers/common/ (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/analyzers/common/src/java/org/apache/lucene/analysis/ca/CatalanAnalyzer.java (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/analyzers/common/src/java/org/apache/lucene/analysis/en/EnglishMinimalStemmer.java (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/analyzers/common/src/java/org/apache/lucene/analysis/en/EnglishPossessiveFilter.java (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/analyzers/common/src/java/org/apache/lucene/analysis/eu/BasqueAnalyzer.java (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/analyzers/common/src/java/org/apache/lucene/analysis/hu/HungarianLightStemmer.java (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/analyzers/common/src/java/org/apache/lucene/analysis/hy/ArmenianAnalyzer.java (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/analyzers/common/src/java/org/apache/lucene/analysis/shingle/ (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/analyzers/common/src/java/org/apache/lucene/analysis/util/StemmerUtil.java (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/analyzers/common/src/java/org/tartarus/snowball/TestApp.java (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/analyzers/common/src/test/ (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/analyzers/common/src/test/org/apache/lucene/analysis/shingle/ (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/analyzers/common/src/test/org/apache/lucene/analysis/snowball/TestSnowball.java (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/analyzers/smartcn/ (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/analyzers/stempel/ (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/analyzers/stempel/src/java/org/apache/lucene/analysis/pl/PolishAnalyzer.java (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/benchmark/ (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/highlighter/ (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/highlighter/src/test/ (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/icu/ (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/icu/lib/ (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/icu/src/java/org/apache/lucene/collation/ICUCollationKeyAnalyzer.java (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/icu/src/java/org/apache/lucene/collation/ICUCollationKeyFilter.java (props changed)
lucene/dev/branches/branch_3x/lucene/contrib/instantiated/src/test/org/apache/lucene/store/instantiated/TestIndicesEquals.java (props changed)
lucene/dev/branches/branch_3x/lucene/src/ (props changed)
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/analysis/BaseCharFilter.java (props changed)
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/analysis/LengthFilter.java (props changed)
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/analysis/LetterTokenizer.java (props changed)
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/analysis/LowerCaseTokenizer.java (props changed)
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/analysis/Tokenizer.java (props changed)
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/analysis/standard/ (props changed)
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/analysis/standard/ClassicTokenizerImpl.jflex (props changed)
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/analysis/standard/StandardFilter.java (props changed)
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/analysis/standard/StandardTokenizer.java (props changed)
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/analysis/standard/StandardTokenizerImpl.jflex (props changed)
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/analysis/standard/UAX29Tokenizer.jflex (props changed)
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/IndexWriter.java
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentInfos.java
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java (props changed)
lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/util/StringHelper.java (props changed)
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/analysis/ (props changed)
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/analysis/LuceneResourcesWikiPage.html (props changed)
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/analysis/LuceneResourcesWikiPageURLs.txt (props changed)
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/analysis/TestISOLatin1AccentFilter.java (props changed)
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/analysis/email.addresses.from.random.text.with.email.addresses.txt (props changed)
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/analysis/random.text.with.email.addresses.txt (props changed)
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/analysis/random.text.with.urls.txt (props changed)
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/analysis/urls.from.random.text.with.urls.txt (props changed)
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/collation/ (props changed)
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/document/TestDateTools.java (props changed)
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/document/TestNumberTools.java (props changed)
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/ (props changed)
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java (props changed)
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/TestCachingWrapperFilter.java (props changed)
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/spans/TestPayloadSpans.java (props changed)
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/search/spans/TestSpans.java (props changed)
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java
lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/util/TestAttributeSource.java (props changed)
lucene/dev/branches/branch_3x/solr/ (props changed)
lucene/dev/branches/branch_3x/solr/example/ (props changed)
lucene/dev/branches/branch_3x/solr/lib/commons-httpclient-3.1.jar (props changed)
lucene/dev/branches/branch_3x/solr/lib/jcl-over-slf4j-1.5.5.jar (props changed)
lucene/dev/branches/branch_3x/solr/src/ (props changed)
lucene/dev/branches/branch_3x/solr/src/common/org/apache/solr/common/ (props changed)
lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/analysis/ShingleFilterFactory.java (props changed)
lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/analysis/SynonymFilter.java (props changed)
lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/analysis/SynonymMap.java (props changed)
lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/analysis/WordDelimiterIterator.java (props changed)
lucene/dev/branches/branch_3x/solr/src/java/org/apache/solr/response/ (props changed)
lucene/dev/branches/branch_3x/solr/src/maven/solr-core-pom.xml.template (props changed)
lucene/dev/branches/branch_3x/solr/src/maven/solr-solrj-pom.xml.template (props changed)
lucene/dev/branches/branch_3x/solr/src/solrj/org/ (props changed)
lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/ (props changed)
lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/analysis/TestPatternTokenizerFactory.java (props changed)
lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/analysis/TestRemoveDuplicatesTokenFilter.java (props changed)
lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/analysis/TestShingleFilterFactory.java (props changed)
lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/analysis/TestSynonymFilter.java (props changed)
lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/analysis/TestTrimFilter.java (props changed)
lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/client/ (props changed)
lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/handler/component/QueryElevationComponentTest.java (props changed)
lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/request/SimpleFacetsTest.java (props changed)
lucene/dev/branches/branch_3x/solr/src/test/org/apache/solr/update/AutoCommitTest.java (props changed)
lucene/dev/branches/branch_3x/solr/src/webapp/src/org/apache/solr/client/solrj/embedded/ (props changed)
lucene/dev/branches/branch_3x/solr/src/webapp/web/admin/ (props changed)
Modified: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/IndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/IndexWriter.java?rev=1039740&r1=1039739&r2=1039740&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/IndexWriter.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/IndexWriter.java Sat Nov 27 19:44:42 2010
@@ -4416,6 +4416,7 @@ public class IndexWriter implements Clos
synchronized(this) {
assert lastCommitChangeCount <= changeCount;
+ myChangeCount = changeCount;
if (changeCount == lastCommitChangeCount) {
if (infoStream != null)
@@ -4432,7 +4433,24 @@ public class IndexWriter implements Clos
readerPool.commit();
+ // It's possible another flush (that did not close
+ // the open do stores) snuck in after the flush we
+ // just did, so we remove any tail segments
+ // referencing the open doc store from the
+ // SegmentInfos we are about to sync (the main
+ // SegmentInfos will keep them):
toSync = (SegmentInfos) segmentInfos.clone();
+ final String dss = docWriter.getDocStoreSegment();
+ if (dss != null) {
+ while(true) {
+ final String dss2 = toSync.info(toSync.size()-1).getDocStoreSegment();
+ if (dss2 == null || !dss2.equals(dss)) {
+ break;
+ }
+ toSync.remove(toSync.size()-1);
+ changeCount++;
+ }
+ }
assert filesExist(toSync);
if (commitUserData != null)
@@ -4444,7 +4462,6 @@ public class IndexWriter implements Clos
// merge completes which would otherwise have
// removed the files we are now syncing.
deleter.incRef(toSync, false);
- myChangeCount = changeCount;
}
assert testPoint("midStartCommit");
Modified: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentInfos.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentInfos.java?rev=1039740&r1=1039739&r2=1039740&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentInfos.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/index/SegmentInfos.java Sat Nov 27 19:44:42 2010
@@ -110,7 +110,7 @@ public final class SegmentInfos extends
* If non-null, information about loading segments_N files
* will be printed here. @see #setInfoStream.
*/
- private static PrintStream infoStream;
+ private static PrintStream infoStream = null;
public final SegmentInfo info(int i) {
return get(i);
@@ -683,7 +683,7 @@ public final class SegmentInfos extends
try {
Object v = doBody(segmentFileName);
- if (exc != null && infoStream != null) {
+ if (infoStream != null) {
message("success on " + segmentFileName);
}
return v;
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java?rev=1039740&r1=1039739&r2=1039740&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/index/TestIndexWriter.java Sat Nov 27 19:44:42 2010
@@ -1033,7 +1033,7 @@ public class TestIndexWriter extends Luc
sis.read(dir);
// Since we flushed w/o allowing merging we should now
// have 10 segments
- assert sis.size() == 10;
+ assertEquals(10, sis.size());
dir.close();
}
@@ -2421,9 +2421,8 @@ public class TestIndexWriter extends Luc
final int NUM_THREADS = 5;
final double RUN_SEC = 0.5;
final Directory dir = newDirectory();
- final IndexWriter w = new IndexWriter(dir, newIndexWriterConfig(
- TEST_VERSION_CURRENT, new SimpleAnalyzer(TEST_VERSION_CURRENT)));
- _TestUtil.reduceOpenFiles(w);
+ final RandomIndexWriter w = new RandomIndexWriter(random, dir);
+ _TestUtil.reduceOpenFiles(w.w);
w.commit();
final AtomicBoolean failed = new AtomicBoolean();
Thread[] threads = new Thread[NUM_THREADS];
Modified: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java?rev=1039740&r1=1039739&r2=1039740&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/util/LuceneTestCase.java Sat Nov 27 19:44:42 2010
@@ -521,7 +521,11 @@ public abstract class LuceneTestCase ext
c.setMergeScheduler(new SerialMergeScheduler());
}
if (r.nextBoolean()) {
- c.setMaxBufferedDocs(_TestUtil.nextInt(r, 2, 1000));
+ if (r.nextInt(20) == 17) {
+ c.setMaxBufferedDocs(2);
+ } else {
+ c.setMaxBufferedDocs(_TestUtil.nextInt(r, 2, 1000));
+ }
}
if (r.nextBoolean()) {
c.setTermIndexInterval(_TestUtil.nextInt(r, 1, 1000));
@@ -535,7 +539,11 @@ public abstract class LuceneTestCase ext
logmp.setUseCompoundDocStore(r.nextBoolean());
logmp.setUseCompoundFile(r.nextBoolean());
logmp.setCalibrateSizeByDeletes(r.nextBoolean());
- logmp.setMergeFactor(_TestUtil.nextInt(r, 2, 20));
+ if (r.nextInt(3) == 2) {
+ logmp.setMergeFactor(2);
+ } else {
+ logmp.setMergeFactor(_TestUtil.nextInt(r, 2, 20));
+ }
}
c.setReaderPooling(r.nextBoolean());