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 2012/08/30 23:51:12 UTC
svn commit: r1379175 - in /lucene/dev/branches/branch_4x/lucene: ./
core/src/java/org/apache/lucene/codecs/lucene3x/
core/src/java/org/apache/lucene/index/ core/src/test/org/apache/lucene/index/
test-framework/src/java/org/apache/lucene/codecs/lucene3x/
Author: rmuir
Date: Thu Aug 30 21:51:11 2012
New Revision: 1379175
URL: http://svn.apache.org/viewvc?rev=1379175&view=rev
Log:
LUCENE-4339: allow deletes against 3.x segments
Modified:
lucene/dev/branches/branch_4x/lucene/CHANGES.txt
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xCodec.java
lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java
lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWCodec.java
Modified: lucene/dev/branches/branch_4x/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/CHANGES.txt?rev=1379175&r1=1379174&r2=1379175&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/lucene/CHANGES.txt Thu Aug 30 21:51:11 2012
@@ -23,6 +23,11 @@ New Features
* LUCENE-4323: Added support for an absolute maximum CFS segment size
(in MiB) to LogMergePolicy and TieredMergePolicy.
(Alexey Lef via Uwe Schindler)
+
+* LUCENE-4339: Allow deletes against 3.x segments for easier upgrading.
+ Lucene3x Codec is still otherwise read-only, you should not set it
+ as the default Codec on IndexWriter, because it cannot write new segments.
+ (Mike McCandless, Robert Muir)
API Changes
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xCodec.java?rev=1379175&r1=1379174&r2=1379175&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xCodec.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/codecs/lucene3x/Lucene3xCodec.java Thu Aug 30 21:51:11 2012
@@ -68,12 +68,7 @@ public class Lucene3xCodec extends Codec
static final String COMPOUND_FILE_STORE_EXTENSION = "cfx";
// TODO: this should really be a different impl
- private final LiveDocsFormat liveDocsFormat = new Lucene40LiveDocsFormat() {
- @Override
- public void writeLiveDocs(MutableBits bits, Directory dir, SegmentInfoPerCommit info, int newDelCount, IOContext context) throws IOException {
- throw new UnsupportedOperationException("this codec can only be used for reading");
- }
- };
+ private final LiveDocsFormat liveDocsFormat = new Lucene40LiveDocsFormat();
// 3.x doesn't support docvalues
private final DocValuesFormat docValuesFormat = new DocValuesFormat() {
Modified: lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java?rev=1379175&r1=1379174&r2=1379175&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/java/org/apache/lucene/index/SegmentInfos.java Thu Aug 30 21:51:11 2012
@@ -380,12 +380,13 @@ public final class SegmentInfos implemen
if (!segmentWasUpgraded(directory, si)) {
+ String markerFileName = IndexFileNames.segmentFileName(si.name, "upgraded", Lucene3xSegmentInfoFormat.UPGRADED_SI_EXTENSION);
+ si.addFile(markerFileName);
+
final String segmentFileName = write3xInfo(directory, si, IOContext.DEFAULT);
upgradedSIFiles.add(segmentFileName);
directory.sync(Collections.singletonList(segmentFileName));
- String markerFileName = IndexFileNames.segmentFileName(si.name, "upgraded", Lucene3xSegmentInfoFormat.UPGRADED_SI_EXTENSION);
-
// Write separate marker file indicating upgrade
// is completed. This way, if there is a JVM
// kill/crash, OS crash, power loss, etc. while
Modified: lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java?rev=1379175&r1=1379174&r2=1379175&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java (original)
+++ lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestBackwardsCompatibility.java Thu Aug 30 21:51:11 2012
@@ -302,6 +302,51 @@ public class TestBackwardsCompatibility
}
}
+ /** @deprecated 3.x transition mechanism */
+ @Deprecated
+ public void testDeleteOldIndex() throws IOException {
+ for (String name : oldNames) {
+ if (VERBOSE) {
+ System.out.println("TEST: oldName=" + name);
+ }
+
+ // Try one delete:
+ Directory dir = newDirectory(oldIndexDirs.get(name));
+
+ IndexReader ir = DirectoryReader.open(dir);
+ assertEquals(35, ir.numDocs());
+ ir.close();
+
+ IndexWriter iw = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, null));
+ iw.deleteDocuments(new Term("id", "3"));
+ iw.close();
+
+ ir = DirectoryReader.open(dir);
+ assertEquals(34, ir.numDocs());
+ ir.close();
+
+ // Delete all but 1 document:
+ iw = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, null));
+ for(int i=0;i<35;i++) {
+ iw.deleteDocuments(new Term("id", ""+i));
+ }
+
+ // Verify NRT reader takes:
+ ir = DirectoryReader.open(iw, true);
+ iw.close();
+
+ assertEquals("index " + name, 1, ir.numDocs());
+ ir.close();
+
+ // Verify non-NRT reader takes:
+ ir = DirectoryReader.open(dir);
+ assertEquals("index " + name, 1, ir.numDocs());
+ ir.close();
+
+ dir.close();
+ }
+ }
+
private void doTestHits(ScoreDoc[] hits, int expectedCount, IndexReader reader) throws IOException {
final int hitCount = hits.length;
assertEquals("wrong number of hits", expectedCount, hitCount);
Modified: lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWCodec.java?rev=1379175&r1=1379174&r2=1379175&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWCodec.java (original)
+++ lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/codecs/lucene3x/PreFlexRWCodec.java Thu Aug 30 21:51:11 2012
@@ -38,8 +38,6 @@ public class PreFlexRWCodec extends Luce
private final TermVectorsFormat termVectors = new PreFlexRWTermVectorsFormat();
private final SegmentInfoFormat segmentInfos = new PreFlexRWSegmentInfoFormat();
private final StoredFieldsFormat storedFields = new PreFlexRWStoredFieldsFormat();
- // TODO: this should really be a different impl
- private final LiveDocsFormat liveDocs = new Lucene40LiveDocsFormat();
@Override
public PostingsFormat postingsFormat() {
@@ -87,15 +85,6 @@ public class PreFlexRWCodec extends Luce
}
@Override
- public LiveDocsFormat liveDocsFormat() {
- if (LuceneTestCase.PREFLEX_IMPERSONATION_IS_ACTIVE) {
- return liveDocs;
- } else {
- return super.liveDocsFormat();
- }
- }
-
- @Override
public StoredFieldsFormat storedFieldsFormat() {
if (LuceneTestCase.PREFLEX_IMPERSONATION_IS_ACTIVE) {
return storedFields;