You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2014/01/22 20:04:15 UTC
svn commit: r1560477 - in /lucene/dev/branches/lucene_solr_4_6: ./ lucene/
lucene/codecs/ lucene/codecs/src/test/org/apache/lucene/codecs/appending/
lucene/core/ lucene/core/src/java/org/apache/lucene/codecs/lucene40/
lucene/core/src/java/org/apache/lu...
Author: rmuir
Date: Wed Jan 22 19:04:14 2014
New Revision: 1560477
URL: http://svn.apache.org/r1560477
Log:
LUCENE-5377: IW.addIndexes(Dir[]) causes silent index corruption
Added:
lucene/dev/branches/lucene_solr_4_6/lucene/codecs/src/test/org/apache/lucene/codecs/appending/
- copied from r1560421, lucene/dev/branches/branch_4x/lucene/codecs/src/test/org/apache/lucene/codecs/appending/
lucene/dev/branches/lucene_solr_4_6/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40SegmentInfoWriter.java
- copied unchanged from r1560421, lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40SegmentInfoWriter.java
Removed:
lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene40/Lucene40SegmentInfoWriter.java
Modified:
lucene/dev/branches/lucene_solr_4_6/ (props changed)
lucene/dev/branches/lucene_solr_4_6/lucene/ (props changed)
lucene/dev/branches/lucene_solr_4_6/lucene/CHANGES.txt (contents, props changed)
lucene/dev/branches/lucene_solr_4_6/lucene/codecs/ (props changed)
lucene/dev/branches/lucene_solr_4_6/lucene/core/ (props changed)
lucene/dev/branches/lucene_solr_4_6/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40SegmentInfoFormat.java
lucene/dev/branches/lucene_solr_4_6/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40DocValuesFormat.java
lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40PostingsFormat.java
lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40PostingsReader.java
lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40StoredFieldsFormat.java
lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40TermVectorsFormat.java
lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestReuseDocsEnum.java
lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene41/TestLucene41StoredFieldsFormat.java
lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene42/TestLucene42DocValuesFormat.java
lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java (contents, props changed)
lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility3x.java
lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java
lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java
lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/ (props changed)
lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene40/Lucene40RWCodec.java
lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene41/Lucene41RWCodec.java
lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene42/Lucene42RWCodec.java
lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene45/Lucene45RWCodec.java
lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleSetupAndRestoreClassEnv.java
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/CHANGES.txt?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/CHANGES.txt Wed Jan 22 19:04:14 2014
@@ -34,6 +34,10 @@ Bug fixes
preventing wrong term positions for fields that use
StringTokenStream. (Michael Busch)
+* LUCENE-5377: IndexWriter.addIndexes(Directory[]) would cause corruption
+ on Lucene 4.6 if any index segments were Lucene 4.0-4.5.
+ (Littlestar, Mike McCandless, Shai Erera, Robert Muir)
+
======================= Lucene 4.6.0 =======================
New Features
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40SegmentInfoFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40SegmentInfoFormat.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40SegmentInfoFormat.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/core/src/java/org/apache/lucene/codecs/lucene40/Lucene40SegmentInfoFormat.java Wed Jan 22 19:04:14 2014
@@ -67,11 +67,12 @@ import org.apache.lucene.store.DataOutpu
*
* @see SegmentInfos
* @lucene.experimental
- * @deprecated Only for reading old 4.0-4.5 segments
+ * @deprecated Only for reading old 4.0-4.5 segments, and supporting IndexWriter.addIndexes
*/
@Deprecated
public class Lucene40SegmentInfoFormat extends SegmentInfoFormat {
private final SegmentInfoReader reader = new Lucene40SegmentInfoReader();
+ private final SegmentInfoWriter writer = new Lucene40SegmentInfoWriter();
/** Sole constructor. */
public Lucene40SegmentInfoFormat() {
@@ -82,9 +83,11 @@ public class Lucene40SegmentInfoFormat e
return reader;
}
+ // we must unfortunately support write, to allow addIndexes to write a new .si with rewritten filenames:
+ // see LUCENE-5377
@Override
public SegmentInfoWriter getSegmentInfoWriter() {
- throw new UnsupportedOperationException("this codec can only be used for reading");
+ return writer;
}
/** File extension used to store {@link SegmentInfo}. */
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java Wed Jan 22 19:04:14 2014
@@ -2702,11 +2702,16 @@ public class IndexWriter implements Clos
// segment name (its own name, if its 3.x, and doc
// store segment name):
TrackingDirectoryWrapper trackingDir = new TrackingDirectoryWrapper(directory);
+ final Codec currentCodec = newInfo.getCodec();
try {
- newInfo.getCodec().segmentInfoFormat().getSegmentInfoWriter().write(trackingDir, newInfo, fis, context);
+ currentCodec.segmentInfoFormat().getSegmentInfoWriter().write(trackingDir, newInfo, fis, context);
} catch (UnsupportedOperationException uoe) {
- // OK: 3x codec cannot write a new SI file;
- // SegmentInfos will write this on commit
+ if (currentCodec instanceof Lucene3xCodec) {
+ // OK: 3x codec cannot write a new SI file;
+ // SegmentInfos will write this on commit
+ } else {
+ throw uoe;
+ }
}
final Collection<String> siFiles = trackingDir.getCreatedFiles();
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40DocValuesFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40DocValuesFormat.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40DocValuesFormat.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40DocValuesFormat.java Wed Jan 22 19:04:14 2014
@@ -19,12 +19,18 @@ package org.apache.lucene.codecs.lucene4
import org.apache.lucene.codecs.Codec;
import org.apache.lucene.index.BaseDocValuesFormatTestCase;
+import org.junit.BeforeClass;
/**
* Tests Lucene40DocValuesFormat
*/
public class TestLucene40DocValuesFormat extends BaseDocValuesFormatTestCase {
private final Codec codec = new Lucene40RWCodec();
+
+ @BeforeClass
+ public static void beforeClass() {
+ OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true; // explicitly instantiates ancient codec
+ }
@Override
protected Codec getCodec() {
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40PostingsFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40PostingsFormat.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40PostingsFormat.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40PostingsFormat.java Wed Jan 22 19:04:14 2014
@@ -19,6 +19,7 @@ package org.apache.lucene.codecs.lucene4
import org.apache.lucene.codecs.Codec;
import org.apache.lucene.index.BasePostingsFormatTestCase;
+import org.junit.BeforeClass;
/**
* Tests Lucene40PostingsFormat
@@ -26,6 +27,11 @@ import org.apache.lucene.index.BasePosti
public class TestLucene40PostingsFormat extends BasePostingsFormatTestCase {
private final Codec codec = new Lucene40Codec();
+ @BeforeClass
+ public static void beforeClass() {
+ OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true; // explicitly instantiates ancient codec
+ }
+
@Override
protected Codec getCodec() {
return codec;
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40PostingsReader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40PostingsReader.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40PostingsReader.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40PostingsReader.java Wed Jan 22 19:04:14 2014
@@ -34,6 +34,7 @@ import org.apache.lucene.index.Term;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util._TestUtil;
+import org.junit.BeforeClass;
public class TestLucene40PostingsReader extends LuceneTestCase {
static final String terms[] = new String[100];
@@ -42,6 +43,11 @@ public class TestLucene40PostingsReader
terms[i] = Integer.toString(i+1);
}
}
+
+ @BeforeClass
+ public static void beforeClass() {
+ OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true; // explicitly instantiates ancient codec
+ }
/** tests terms with different probabilities of being in the document.
* depends heavily on term vectors cross-check at checkIndex
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40StoredFieldsFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40StoredFieldsFormat.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40StoredFieldsFormat.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40StoredFieldsFormat.java Wed Jan 22 19:04:14 2014
@@ -19,9 +19,15 @@ package org.apache.lucene.codecs.lucene4
import org.apache.lucene.codecs.Codec;
import org.apache.lucene.index.BaseStoredFieldsFormatTestCase;
+import org.junit.BeforeClass;
public class TestLucene40StoredFieldsFormat extends BaseStoredFieldsFormatTestCase {
+ @BeforeClass
+ public static void beforeClass() {
+ OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true; // explicitly instantiates ancient codec
+ }
+
@Override
protected Codec getCodec() {
return new Lucene40RWCodec();
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40TermVectorsFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40TermVectorsFormat.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40TermVectorsFormat.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestLucene40TermVectorsFormat.java Wed Jan 22 19:04:14 2014
@@ -19,9 +19,15 @@ package org.apache.lucene.codecs.lucene4
import org.apache.lucene.codecs.Codec;
import org.apache.lucene.index.BaseTermVectorsFormatTestCase;
+import org.junit.BeforeClass;
public class TestLucene40TermVectorsFormat extends BaseTermVectorsFormatTestCase {
+ @BeforeClass
+ public static void beforeClass() {
+ OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true; // explicitly instantiates ancient codec
+ }
+
@Override
protected Codec getCodec() {
return new Lucene40RWCodec();
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestReuseDocsEnum.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestReuseDocsEnum.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestReuseDocsEnum.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene40/TestReuseDocsEnum.java Wed Jan 22 19:04:14 2014
@@ -37,10 +37,16 @@ import org.apache.lucene.util.IOUtils;
import org.apache.lucene.util.LineFileDocs;
import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util._TestUtil;
+import org.junit.BeforeClass;
// TODO: really this should be in BaseTestPF or somewhere else? useful test!
public class TestReuseDocsEnum extends LuceneTestCase {
+ @BeforeClass
+ public static void beforeClass() {
+ OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true; // explicitly instantiates ancient codec
+ }
+
public void testReuseDocsEnumNoReuse() throws IOException {
Directory dir = newDirectory();
Codec cp = _TestUtil.alwaysPostingsFormat(new Lucene40RWPostingsFormat());
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene41/TestLucene41StoredFieldsFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene41/TestLucene41StoredFieldsFormat.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene41/TestLucene41StoredFieldsFormat.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene41/TestLucene41StoredFieldsFormat.java Wed Jan 22 19:04:14 2014
@@ -19,9 +19,15 @@ package org.apache.lucene.codecs.lucene4
import org.apache.lucene.codecs.Codec;
import org.apache.lucene.index.BaseStoredFieldsFormatTestCase;
+import org.junit.BeforeClass;
public class TestLucene41StoredFieldsFormat extends BaseStoredFieldsFormatTestCase {
+ @BeforeClass
+ public static void beforeClass() {
+ OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true; // explicitly instantiates ancient codec
+ }
+
@Override
protected Codec getCodec() {
return new Lucene41RWCodec();
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene42/TestLucene42DocValuesFormat.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene42/TestLucene42DocValuesFormat.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene42/TestLucene42DocValuesFormat.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/codecs/lucene42/TestLucene42DocValuesFormat.java Wed Jan 22 19:04:14 2014
@@ -19,6 +19,7 @@ package org.apache.lucene.codecs.lucene4
import org.apache.lucene.codecs.Codec;
import org.apache.lucene.index.BaseCompressingDocValuesFormatTestCase;
+import org.junit.BeforeClass;
/**
* Tests Lucene42DocValuesFormat
@@ -26,6 +27,11 @@ import org.apache.lucene.index.BaseCompr
public class TestLucene42DocValuesFormat extends BaseCompressingDocValuesFormatTestCase {
private final Codec codec = new Lucene42RWCodec();
+ @BeforeClass
+ public static void beforeClass() {
+ OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true; // explicitly instantiates ancient codec
+ }
+
@Override
protected Codec getCodec() {
return codec;
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java Wed Jan 22 19:04:14 2014
@@ -207,6 +207,8 @@ public class TestBackwardsCompatibility
@BeforeClass
public static void beforeClass() throws Exception {
+ assertFalse("test infra is broken!", LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE);
+ assertFalse("test infra is broken!", LuceneTestCase.PREFLEX_IMPERSONATION_IS_ACTIVE);
List<String> names = new ArrayList<String>(oldNames.length + oldSingleSegmentNames.length);
names.addAll(Arrays.asList(oldNames));
names.addAll(Arrays.asList(oldSingleSegmentNames));
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility3x.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility3x.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility3x.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility3x.java Wed Jan 22 19:04:14 2014
@@ -74,7 +74,7 @@ import org.junit.BeforeClass;
// don't use 3.x codec, its unrealistic since it means
// we won't even be running the actual code, only the impostor
// Sep codec cannot yet handle the offsets we add when changing indexes!
-@SuppressCodecs({"Lucene3x", "MockFixedIntBlock", "MockVariableIntBlock", "MockSep", "MockRandom"})
+@SuppressCodecs({"Lucene3x", "MockFixedIntBlock", "MockVariableIntBlock", "MockSep", "MockRandom", "Lucene40", "Lucene41", "Appending", "Lucene42", "Lucene45"})
public class TestBackwardsCompatibility3x extends LuceneTestCase {
// Uncomment these cases & run them on an older Lucene
@@ -145,6 +145,8 @@ public class TestBackwardsCompatibility3
@BeforeClass
public static void beforeClass() throws Exception {
+ assertFalse("test infra is broken!", LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE);
+ assertFalse("test infra is broken!", LuceneTestCase.PREFLEX_IMPERSONATION_IS_ACTIVE);
List<String> names = new ArrayList<String>(oldNames.length + oldSingleSegmentNames.length);
names.addAll(Arrays.asList(oldNames));
names.addAll(Arrays.asList(oldSingleSegmentNames));
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/index/TestNumericDocValuesUpdates.java Wed Jan 22 19:04:14 2014
@@ -946,9 +946,11 @@ public class TestNumericDocValuesUpdates
Codec[] oldCodecs = new Codec[] { new Lucene40RWCodec(), new Lucene41RWCodec(), new Lucene42RWCodec(), new Lucene45RWCodec() };
Directory dir = newDirectory();
+ boolean oldValue = OLD_FORMAT_IMPERSONATION_IS_ACTIVE;
// create a segment with an old Codec
IndexWriterConfig conf = newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random()));
conf.setCodec(oldCodecs[random().nextInt(oldCodecs.length)]);
+ OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true;
IndexWriter writer = new IndexWriter(dir, conf);
Document doc = new Document();
doc.add(new StringField("id", "doc", Store.NO));
@@ -966,7 +968,7 @@ public class TestNumericDocValuesUpdates
} catch (UnsupportedOperationException e) {
writer.rollback();
} finally {
- OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true;
+ OLD_FORMAT_IMPERSONATION_IS_ACTIVE = oldValue;
}
dir.close();
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/core/src/test/org/apache/lucene/store/TestFileSwitchDirectory.java Wed Jan 22 19:04:14 2014
@@ -51,6 +51,8 @@ public class TestFileSwitchDirectory ext
FileSwitchDirectory fsd = new FileSwitchDirectory(fileExtensions, primaryDir, secondaryDir, true);
// for now we wire Lucene40Codec because we rely upon its specific impl
+ boolean oldValue = OLD_FORMAT_IMPERSONATION_IS_ACTIVE;
+ OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true;
IndexWriter writer = new IndexWriter(
fsd,
new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random())).
@@ -82,6 +84,7 @@ public class TestFileSwitchDirectory ext
assertNotNull(files[i]);
}
fsd.close();
+ OLD_FORMAT_IMPERSONATION_IS_ACTIVE = oldValue;
}
private Directory newFSSwitchDirectory(Set<String> primaryExtensions) throws IOException {
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene40/Lucene40RWCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene40/Lucene40RWCodec.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene40/Lucene40RWCodec.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene40/Lucene40RWCodec.java Wed Jan 22 19:04:14 2014
@@ -41,17 +41,6 @@ public final class Lucene40RWCodec exten
}
};
- private final SegmentInfoFormat infosFormat = new Lucene40SegmentInfoFormat() {
- @Override
- public org.apache.lucene.codecs.SegmentInfoWriter getSegmentInfoWriter() {
- if (!LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE) {
- return super.getSegmentInfoWriter();
- } else {
- return new Lucene40SegmentInfoWriter();
- }
- }
- };
-
private final DocValuesFormat docValues = new Lucene40RWDocValuesFormat();
private final NormsFormat norms = new Lucene40RWNormsFormat();
@@ -70,9 +59,4 @@ public final class Lucene40RWCodec exten
return norms;
}
- @Override
- public SegmentInfoFormat segmentInfoFormat() {
- return infosFormat;
- }
-
}
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene41/Lucene41RWCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene41/Lucene41RWCodec.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene41/Lucene41RWCodec.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene41/Lucene41RWCodec.java Wed Jan 22 19:04:14 2014
@@ -6,14 +6,11 @@ import org.apache.lucene.codecs.DocValue
import org.apache.lucene.codecs.FieldInfosFormat;
import org.apache.lucene.codecs.FieldInfosWriter;
import org.apache.lucene.codecs.NormsFormat;
-import org.apache.lucene.codecs.SegmentInfoFormat;
import org.apache.lucene.codecs.StoredFieldsFormat;
import org.apache.lucene.codecs.lucene40.Lucene40FieldInfosFormat;
import org.apache.lucene.codecs.lucene40.Lucene40FieldInfosWriter;
import org.apache.lucene.codecs.lucene40.Lucene40RWDocValuesFormat;
import org.apache.lucene.codecs.lucene40.Lucene40RWNormsFormat;
-import org.apache.lucene.codecs.lucene40.Lucene40SegmentInfoFormat;
-import org.apache.lucene.codecs.lucene40.Lucene40SegmentInfoWriter;
import org.apache.lucene.util.LuceneTestCase;
/*
@@ -53,17 +50,6 @@ public class Lucene41RWCodec extends Luc
private final DocValuesFormat docValues = new Lucene40RWDocValuesFormat();
private final NormsFormat norms = new Lucene40RWNormsFormat();
- private final SegmentInfoFormat segmentInfosFormat = new Lucene40SegmentInfoFormat() {
- @Override
- public org.apache.lucene.codecs.SegmentInfoWriter getSegmentInfoWriter() {
- if (!LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE) {
- return super.getSegmentInfoWriter();
- } else {
- return new Lucene40SegmentInfoWriter();
- }
- }
- };
-
@Override
public FieldInfosFormat fieldInfosFormat() {
return fieldInfos;
@@ -84,9 +70,4 @@ public class Lucene41RWCodec extends Luc
return norms;
}
- @Override
- public SegmentInfoFormat segmentInfoFormat() {
- return segmentInfosFormat;
- }
-
}
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene42/Lucene42RWCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene42/Lucene42RWCodec.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene42/Lucene42RWCodec.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene42/Lucene42RWCodec.java Wed Jan 22 19:04:14 2014
@@ -23,9 +23,6 @@ import org.apache.lucene.codecs.DocValue
import org.apache.lucene.codecs.FieldInfosFormat;
import org.apache.lucene.codecs.FieldInfosWriter;
import org.apache.lucene.codecs.NormsFormat;
-import org.apache.lucene.codecs.SegmentInfoFormat;
-import org.apache.lucene.codecs.lucene40.Lucene40SegmentInfoFormat;
-import org.apache.lucene.codecs.lucene40.Lucene40SegmentInfoWriter;
import org.apache.lucene.util.LuceneTestCase;
/**
@@ -47,17 +44,6 @@ public class Lucene42RWCodec extends Luc
}
}
};
-
- private final SegmentInfoFormat segmentInfosFormat = new Lucene40SegmentInfoFormat() {
- @Override
- public org.apache.lucene.codecs.SegmentInfoWriter getSegmentInfoWriter() {
- if (!LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE) {
- return super.getSegmentInfoWriter();
- } else {
- return new Lucene40SegmentInfoWriter();
- }
- }
- };
@Override
public DocValuesFormat getDocValuesFormatForField(String field) {
@@ -72,11 +58,5 @@ public class Lucene42RWCodec extends Luc
@Override
public FieldInfosFormat fieldInfosFormat() {
return fieldInfosFormat;
- }
-
- @Override
- public SegmentInfoFormat segmentInfoFormat() {
- return segmentInfosFormat;
- }
-
+ }
}
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene45/Lucene45RWCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene45/Lucene45RWCodec.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene45/Lucene45RWCodec.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene45/Lucene45RWCodec.java Wed Jan 22 19:04:14 2014
@@ -21,9 +21,6 @@ import java.io.IOException;
import org.apache.lucene.codecs.FieldInfosFormat;
import org.apache.lucene.codecs.FieldInfosWriter;
-import org.apache.lucene.codecs.SegmentInfoFormat;
-import org.apache.lucene.codecs.lucene40.Lucene40SegmentInfoFormat;
-import org.apache.lucene.codecs.lucene40.Lucene40SegmentInfoWriter;
import org.apache.lucene.codecs.lucene42.Lucene42FieldInfosFormat;
import org.apache.lucene.codecs.lucene42.Lucene42FieldInfosWriter;
import org.apache.lucene.util.LuceneTestCase;
@@ -44,26 +41,9 @@ public class Lucene45RWCodec extends Luc
}
}
};
-
- private final SegmentInfoFormat segmentInfosFormat = new Lucene40SegmentInfoFormat() {
- @Override
- public org.apache.lucene.codecs.SegmentInfoWriter getSegmentInfoWriter() {
- if (!LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE) {
- return super.getSegmentInfoWriter();
- } else {
- return new Lucene40SegmentInfoWriter();
- }
- }
- };
@Override
public FieldInfosFormat fieldInfosFormat() {
return fieldInfosFormat;
}
-
- @Override
- public SegmentInfoFormat segmentInfoFormat() {
- return segmentInfosFormat;
- }
-
}
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/util/LuceneTestCase.java Wed Jan 22 19:04:14 2014
@@ -333,6 +333,7 @@ public abstract class LuceneTestCase ext
// Fields initialized in class or instance rules.
// -----------------------------------------------------------------
+ // TODO: why do we have this? This should just use the OLD_FORMAT_IMPERSONATION...
/**
* @lucene.internal
*/
@@ -340,12 +341,12 @@ public abstract class LuceneTestCase ext
/**
* When {@code true}, Codecs for old Lucene version will support writing
- * indexes in that format. Defaults to {@code true}, can be disabled by
- * spdecific tests on demand.
+ * indexes in that format. Defaults to {@code false}, can be disabled by
+ * specific tests on demand.
*
* @lucene.internal
*/
- public static boolean OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true;
+ public static boolean OLD_FORMAT_IMPERSONATION_IS_ACTIVE = false;
// -----------------------------------------------------------------
// Class level (suite) rules.
Modified: lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleSetupAndRestoreClassEnv.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleSetupAndRestoreClassEnv.java?rev=1560477&r1=1560476&r2=1560477&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleSetupAndRestoreClassEnv.java (original)
+++ lucene/dev/branches/lucene_solr_4_6/lucene/test-framework/src/java/org/apache/lucene/util/TestRuleSetupAndRestoreClassEnv.java Wed Jan 22 19:04:14 2014
@@ -22,7 +22,6 @@ import static org.apache.lucene.util.Luc
import static org.apache.lucene.util.LuceneTestCase.TEST_DOCVALUESFORMAT;
import static org.apache.lucene.util.LuceneTestCase.TEST_POSTINGSFORMAT;
import static org.apache.lucene.util.LuceneTestCase.VERBOSE;
-import static org.apache.lucene.util.LuceneTestCase.PREFLEX_IMPERSONATION_IS_ACTIVE;
import static org.apache.lucene.util.LuceneTestCase.assumeFalse;
import static org.apache.lucene.util.LuceneTestCase.localeForName;
import static org.apache.lucene.util.LuceneTestCase.random;
@@ -155,7 +154,10 @@ final class TestRuleSetupAndRestoreClass
avoidCodecs.addAll(Arrays.asList(a.value()));
}
- PREFLEX_IMPERSONATION_IS_ACTIVE = false;
+ // set back to default
+ LuceneTestCase.PREFLEX_IMPERSONATION_IS_ACTIVE = false;
+ LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE = false;
+
savedCodec = Codec.getDefault();
int randomVal = random.nextInt(10);
if ("Lucene3x".equals(TEST_CODEC) || ("random".equals(TEST_CODEC) &&
@@ -165,12 +167,13 @@ final class TestRuleSetupAndRestoreClass
!shouldAvoidCodec("Lucene3x"))) { // preflex-only setup
codec = Codec.forName("Lucene3x");
assert (codec instanceof PreFlexRWCodec) : "fix your classpath to have tests-framework.jar before lucene-core.jar";
- PREFLEX_IMPERSONATION_IS_ACTIVE = true;
+ LuceneTestCase.PREFLEX_IMPERSONATION_IS_ACTIVE = true;
} else if ("Lucene40".equals(TEST_CODEC) || ("random".equals(TEST_CODEC) &&
"random".equals(TEST_POSTINGSFORMAT) &&
randomVal == 0 &&
!shouldAvoidCodec("Lucene40"))) { // 4.0 setup
codec = Codec.forName("Lucene40");
+ LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true;
assert codec instanceof Lucene40RWCodec : "fix your classpath to have tests-framework.jar before lucene-core.jar";
assert (PostingsFormat.forName("Lucene40") instanceof Lucene40RWPostingsFormat) : "fix your classpath to have tests-framework.jar before lucene-core.jar";
} else if ("Lucene41".equals(TEST_CODEC) || ("random".equals(TEST_CODEC) &&
@@ -179,6 +182,7 @@ final class TestRuleSetupAndRestoreClass
randomVal == 1 &&
!shouldAvoidCodec("Lucene41"))) {
codec = Codec.forName("Lucene41");
+ LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true;
assert codec instanceof Lucene41RWCodec : "fix your classpath to have tests-framework.jar before lucene-core.jar";
} else if ("Lucene42".equals(TEST_CODEC) || ("random".equals(TEST_CODEC) &&
"random".equals(TEST_POSTINGSFORMAT) &&
@@ -186,6 +190,7 @@ final class TestRuleSetupAndRestoreClass
randomVal == 2 &&
!shouldAvoidCodec("Lucene42"))) {
codec = Codec.forName("Lucene42");
+ LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true;
assert codec instanceof Lucene42RWCodec : "fix your classpath to have tests-framework.jar before lucene-core.jar";
} else if ("Lucene45".equals(TEST_CODEC) || ("random".equals(TEST_CODEC) &&
"random".equals(TEST_POSTINGSFORMAT) &&
@@ -193,6 +198,7 @@ final class TestRuleSetupAndRestoreClass
randomVal == 5 &&
!shouldAvoidCodec("Lucene45"))) {
codec = Codec.forName("Lucene45");
+ LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true;
assert codec instanceof Lucene45RWCodec : "fix your classpath to have tests-framework.jar before lucene-core.jar";
} else if (("random".equals(TEST_POSTINGSFORMAT) == false) || ("random".equals(TEST_DOCVALUESFORMAT) == false)) {
// the user wired postings or DV: this is messy
@@ -232,6 +238,7 @@ final class TestRuleSetupAndRestoreClass
codec = new SimpleTextCodec();
} else if ("Appending".equals(TEST_CODEC) || ("random".equals(TEST_CODEC) && randomVal == 8 && !shouldAvoidCodec("Appending"))) {
codec = new AppendingRWCodec();
+ LuceneTestCase.OLD_FORMAT_IMPERSONATION_IS_ACTIVE = true; // this is really just Lucene40 with some minor changes
} else if ("CheapBastard".equals(TEST_CODEC) || ("random".equals(TEST_CODEC) && randomVal == 8 && !shouldAvoidCodec("CheapBastard") && !shouldAvoidCodec("Lucene41"))) {
// we also avoid this codec if Lucene41 is avoided, since thats the postings format it uses.
codec = new CheapBastardCodec();