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 2012/10/02 14:36:03 UTC
svn commit: r1392890 - in /lucene/dev/branches/lucene4456/lucene/core/src:
java/org/apache/lucene/index/IndexFileDeleter.java
test/org/apache/lucene/index/TestIndexWriter.java
test/org/apache/lucene/index/TestNoDeletionPolicy.java
Author: mikemccand
Date: Tue Oct 2 12:36:02 2012
New Revision: 1392890
URL: http://svn.apache.org/viewvc?rev=1392890&view=rev
Log:
LUCENE-4456: in IFD.refresh() do not delete files that do not match IndexFileNames; fix a couple more test cases
Modified:
lucene/dev/branches/lucene4456/lucene/core/src/java/org/apache/lucene/index/IndexFileDeleter.java
lucene/dev/branches/lucene4456/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
lucene/dev/branches/lucene4456/lucene/core/src/test/org/apache/lucene/index/TestNoDeletionPolicy.java
Modified: lucene/dev/branches/lucene4456/lucene/core/src/java/org/apache/lucene/index/IndexFileDeleter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4456/lucene/core/src/java/org/apache/lucene/index/IndexFileDeleter.java?rev=1392890&r1=1392889&r2=1392890&view=diff
==============================================================================
--- lucene/dev/branches/lucene4456/lucene/core/src/java/org/apache/lucene/index/IndexFileDeleter.java (original)
+++ lucene/dev/branches/lucene4456/lucene/core/src/java/org/apache/lucene/index/IndexFileDeleter.java Tue Oct 2 12:36:02 2012
@@ -333,12 +333,16 @@ final class IndexFileDeleter {
segmentPrefix2 = null;
}
+ Matcher m = IndexFileNames.CODEC_FILE_PATTERN.matcher("");
+
for(int i=0;i<files.length;i++) {
String fileName = files[i];
+ m.reset(fileName);
if ((segmentName == null || fileName.startsWith(segmentPrefix1) || fileName.startsWith(segmentPrefix2)) &&
!fileName.endsWith("write.lock") &&
!refCounts.containsKey(fileName) &&
- !fileName.equals(IndexFileNames.SEGMENTS_GEN)) {
+ !fileName.equals(IndexFileNames.SEGMENTS_GEN) &&
+ (m.matches() || fileName.startsWith(IndexFileNames.SEGMENTS))) {
// Unreferenced file, so remove it
if (infoStream.isEnabled("IFD")) {
infoStream.message("IFD", "refresh [prefix=" + segmentName + "]: removing newly created unreferenced file \"" + fileName + "\"");
Modified: lucene/dev/branches/lucene4456/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4456/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java?rev=1392890&r1=1392889&r2=1392890&view=diff
==============================================================================
--- lucene/dev/branches/lucene4456/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java (original)
+++ lucene/dev/branches/lucene4456/lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java Tue Oct 2 12:36:02 2012
@@ -168,6 +168,12 @@ public class TestIndexWriter extends Luc
public void testCreateWithReader() throws IOException {
Directory dir = newDirectory();
+ if (dir instanceof MockDirectoryWrapper) {
+ // We create leftover files, because the 2nd writer
+ // can't remove the files held open by thef irst reader:
+ ((MockDirectoryWrapper) dir).setAssertNoUnrefencedFilesOnClose(false);
+ }
+
// add one document & close writer
IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig( TEST_VERSION_CURRENT, new MockAnalyzer(random())));
addDoc(writer);
Modified: lucene/dev/branches/lucene4456/lucene/core/src/test/org/apache/lucene/index/TestNoDeletionPolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene4456/lucene/core/src/test/org/apache/lucene/index/TestNoDeletionPolicy.java?rev=1392890&r1=1392889&r2=1392890&view=diff
==============================================================================
--- lucene/dev/branches/lucene4456/lucene/core/src/test/org/apache/lucene/index/TestNoDeletionPolicy.java (original)
+++ lucene/dev/branches/lucene4456/lucene/core/src/test/org/apache/lucene/index/TestNoDeletionPolicy.java Tue Oct 2 12:36:02 2012
@@ -21,10 +21,12 @@ import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Arrays;
+
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.MockDirectoryWrapper;
import org.apache.lucene.util.LuceneTestCase;
import org.junit.Test;
@@ -68,6 +70,10 @@ public class TestNoDeletionPolicy extend
@Test
public void testAllCommitsRemain() throws Exception {
Directory dir = newDirectory();
+ if (dir instanceof MockDirectoryWrapper) {
+ // We create multiple commit points:
+ ((MockDirectoryWrapper) dir).setAssertNoUnrefencedFilesOnClose(false);
+ }
IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(
TEST_VERSION_CURRENT, new MockAnalyzer(random()))
.setIndexDeletionPolicy(NoDeletionPolicy.INSTANCE));