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 2014/03/17 20:30:43 UTC
svn commit: r1578528 - in /lucene/dev/branches/lucene_solr_4_7: ./ lucene/
lucene/core/ lucene/core/src/java/org/apache/lucene/index/
lucene/core/src/test/org/apache/lucene/index/ lucene/test-framework/
lucene/test-framework/src/java/org/apache/lucene/...
Author: mikemccand
Date: Mon Mar 17 19:30:42 2014
New Revision: 1578528
URL: http://svn.apache.org/r1578528
Log:
LUCENE-5481: merge back to 47x
Added:
lucene/dev/branches/lucene_solr_4_7/lucene/core/src/test/org/apache/lucene/index/TestLogMergePolicy.java
- copied unchanged from r1572943, lucene/dev/branches/branch_4x/lucene/core/src/test/org/apache/lucene/index/TestLogMergePolicy.java
lucene/dev/branches/lucene_solr_4_7/lucene/test-framework/src/java/org/apache/lucene/index/BaseMergePolicyTestCase.java
- copied, changed from r1572943, lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/BaseMergePolicyTestCase.java
Modified:
lucene/dev/branches/lucene_solr_4_7/ (props changed)
lucene/dev/branches/lucene_solr_4_7/lucene/ (props changed)
lucene/dev/branches/lucene_solr_4_7/lucene/CHANGES.txt (contents, props changed)
lucene/dev/branches/lucene_solr_4_7/lucene/core/ (props changed)
lucene/dev/branches/lucene_solr_4_7/lucene/core/src/java/org/apache/lucene/index/LogMergePolicy.java
lucene/dev/branches/lucene_solr_4_7/lucene/core/src/java/org/apache/lucene/index/MergePolicy.java
lucene/dev/branches/lucene_solr_4_7/lucene/core/src/java/org/apache/lucene/index/TieredMergePolicy.java
lucene/dev/branches/lucene_solr_4_7/lucene/core/src/test/org/apache/lucene/index/TestTieredMergePolicy.java
lucene/dev/branches/lucene_solr_4_7/lucene/test-framework/ (props changed)
Modified: lucene/dev/branches/lucene_solr_4_7/lucene/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_7/lucene/CHANGES.txt?rev=1578528&r1=1578527&r2=1578528&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_7/lucene/CHANGES.txt (original)
+++ lucene/dev/branches/lucene_solr_4_7/lucene/CHANGES.txt Mon Mar 17 19:30:42 2014
@@ -36,6 +36,9 @@ Bug Fixes
* LUCENE-5532: AutomatonQuery.hashCode was not thread-safe. (Robert Muir)
+* LUCENE-5481: IndexWriter.forceMerge used to run a merge even if there was a
+ single segment in the index. (Adrien Grand, Mike McCandless)
+
Build
* LUCENE-5511: "ant precommit" / "ant check-svn-working-copy" now work again
Modified: lucene/dev/branches/lucene_solr_4_7/lucene/core/src/java/org/apache/lucene/index/LogMergePolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_7/lucene/core/src/java/org/apache/lucene/index/LogMergePolicy.java?rev=1578528&r1=1578527&r2=1578528&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_7/lucene/core/src/java/org/apache/lucene/index/LogMergePolicy.java (original)
+++ lucene/dev/branches/lucene_solr_4_7/lucene/core/src/java/org/apache/lucene/index/LogMergePolicy.java Mon Mar 17 19:30:42 2014
@@ -196,7 +196,7 @@ public abstract class LogMergePolicy ext
}
return numToMerge <= maxNumSegments &&
- (numToMerge != 1 || !segmentIsOriginal || isMerged(mergeInfo));
+ (numToMerge != 1 || !segmentIsOriginal || isMerged(infos, mergeInfo));
}
/**
@@ -221,7 +221,7 @@ public abstract class LogMergePolicy ext
}
// need to skip that segment + add a merge for the 'right' segments,
// unless there is only 1 which is merged.
- if (last - start - 1 > 1 || (start != last - 1 && !isMerged(infos.info(start + 1)))) {
+ if (last - start - 1 > 1 || (start != last - 1 && !isMerged(infos, infos.info(start + 1)))) {
// there is more than 1 segment to the right of
// this one, or a mergeable single segment.
spec.add(new OneMerge(segments.subList(start + 1, last)));
@@ -237,7 +237,7 @@ public abstract class LogMergePolicy ext
// Add any left-over segments, unless there is just 1
// already fully merged
- if (last > 0 && (++start + 1 < last || !isMerged(infos.info(start)))) {
+ if (last > 0 && (++start + 1 < last || !isMerged(infos, infos.info(start)))) {
spec.add(new OneMerge(segments.subList(start, last)));
}
@@ -267,7 +267,7 @@ public abstract class LogMergePolicy ext
// Since we must merge down to 1 segment, the
// choice is simple:
- if (last > 1 || !isMerged(infos.info(0))) {
+ if (last > 1 || !isMerged(infos, infos.info(0))) {
spec.add(new OneMerge(segments.subList(0, last)));
}
} else if (last > maxNumSegments) {
@@ -352,7 +352,7 @@ public abstract class LogMergePolicy ext
}
// There is only one segment already, and it is merged
- if (maxNumSegments == 1 && last == 1 && isMerged(infos.info(0))) {
+ if (maxNumSegments == 1 && last == 1 && isMerged(infos, infos.info(0))) {
if (verbose()) {
message("already 1 seg; skip");
}
Modified: lucene/dev/branches/lucene_solr_4_7/lucene/core/src/java/org/apache/lucene/index/MergePolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_7/lucene/core/src/java/org/apache/lucene/index/MergePolicy.java?rev=1578528&r1=1578527&r2=1578528&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_7/lucene/core/src/java/org/apache/lucene/index/MergePolicy.java (original)
+++ lucene/dev/branches/lucene_solr_4_7/lucene/core/src/java/org/apache/lucene/index/MergePolicy.java Mon Mar 17 19:30:42 2014
@@ -520,14 +520,14 @@ public abstract class MergePolicy implem
/** Returns true if this single info is already fully merged (has no
* pending deletes, is in the same dir as the
* writer, and matches the current compound file setting */
- protected final boolean isMerged(SegmentCommitInfo info) {
+ protected final boolean isMerged(SegmentInfos infos, SegmentCommitInfo info) throws IOException {
IndexWriter w = writer.get();
assert w != null;
boolean hasDeletions = w.numDeletedDocs(info) > 0;
return !hasDeletions &&
!info.info.hasSeparateNorms() &&
info.info.dir == w.getDirectory() &&
- ((noCFSRatio > 0.0 && noCFSRatio < 1.0) || maxCFSSegmentSize < Long.MAX_VALUE);
+ useCompoundFile(infos, info) == info.info.getUseCompoundFile();
}
/** Returns current {@code noCFSRatio}.
Modified: lucene/dev/branches/lucene_solr_4_7/lucene/core/src/java/org/apache/lucene/index/TieredMergePolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_7/lucene/core/src/java/org/apache/lucene/index/TieredMergePolicy.java?rev=1578528&r1=1578527&r2=1578528&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_7/lucene/core/src/java/org/apache/lucene/index/TieredMergePolicy.java (original)
+++ lucene/dev/branches/lucene_solr_4_7/lucene/core/src/java/org/apache/lucene/index/TieredMergePolicy.java Mon Mar 17 19:30:42 2014
@@ -518,7 +518,7 @@ public class TieredMergePolicy extends M
}
if ((maxSegmentCount > 1 && eligible.size() <= maxSegmentCount) ||
- (maxSegmentCount == 1 && eligible.size() == 1 && (!segmentIsOriginal || isMerged(eligible.get(0))))) {
+ (maxSegmentCount == 1 && eligible.size() == 1 && (!segmentIsOriginal || isMerged(infos, eligible.get(0))))) {
if (verbose()) {
message("already merged");
}
Modified: lucene/dev/branches/lucene_solr_4_7/lucene/core/src/test/org/apache/lucene/index/TestTieredMergePolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_7/lucene/core/src/test/org/apache/lucene/index/TestTieredMergePolicy.java?rev=1578528&r1=1578527&r2=1578528&view=diff
==============================================================================
--- lucene/dev/branches/lucene_solr_4_7/lucene/core/src/test/org/apache/lucene/index/TestTieredMergePolicy.java (original)
+++ lucene/dev/branches/lucene_solr_4_7/lucene/core/src/test/org/apache/lucene/index/TestTieredMergePolicy.java Mon Mar 17 19:30:42 2014
@@ -21,10 +21,13 @@ import org.apache.lucene.analysis.MockAn
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.LuceneTestCase;
import org.apache.lucene.util._TestUtil;
-public class TestTieredMergePolicy extends LuceneTestCase {
+public class TestTieredMergePolicy extends BaseMergePolicyTestCase {
+
+ public MergePolicy mergePolicy() {
+ return newTieredMergePolicy();
+ }
public void testForceMergeDeletes() throws Exception {
Directory dir = newDirectory();
Copied: lucene/dev/branches/lucene_solr_4_7/lucene/test-framework/src/java/org/apache/lucene/index/BaseMergePolicyTestCase.java (from r1572943, lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/BaseMergePolicyTestCase.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene_solr_4_7/lucene/test-framework/src/java/org/apache/lucene/index/BaseMergePolicyTestCase.java?p2=lucene/dev/branches/lucene_solr_4_7/lucene/test-framework/src/java/org/apache/lucene/index/BaseMergePolicyTestCase.java&p1=lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/BaseMergePolicyTestCase.java&r1=1572943&r2=1578528&rev=1578528&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/lucene/test-framework/src/java/org/apache/lucene/index/BaseMergePolicyTestCase.java (original)
+++ lucene/dev/branches/lucene_solr_4_7/lucene/test-framework/src/java/org/apache/lucene/index/BaseMergePolicyTestCase.java Mon Mar 17 19:30:42 2014
@@ -24,7 +24,7 @@ import org.apache.lucene.analysis.MockAn
import org.apache.lucene.document.Document;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.LuceneTestCase;
-import org.apache.lucene.util.TestUtil;
+import org.apache.lucene.util._TestUtil;
/**
* Base test case for {@link MergePolicy}.
@@ -48,9 +48,9 @@ public abstract class BaseMergePolicyTes
};
IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random())).setMergeScheduler(mergeScheduler).setMergePolicy(mergePolicy()));
writer.getConfig().getMergePolicy().setNoCFSRatio(random().nextBoolean() ? 0 : 1);
- final int numSegments = TestUtil.nextInt(random(), 2, 20);
+ final int numSegments = _TestUtil.nextInt(random(), 2, 20);
for (int i = 0; i < numSegments; ++i) {
- final int numDocs = TestUtil.nextInt(random(), 1, 5);
+ final int numDocs = _TestUtil.nextInt(random(), 1, 5);
for (int j = 0; j < numDocs; ++j) {
writer.addDocument(new Document());
}
@@ -58,7 +58,7 @@ public abstract class BaseMergePolicyTes
}
for (int i = 5; i >= 0; --i) {
final int segmentCount = writer.getSegmentCount();
- final int maxNumSegments = i == 0 ? 1 : TestUtil.nextInt(random(), 1, 10);
+ final int maxNumSegments = i == 0 ? 1 : _TestUtil.nextInt(random(), 1, 10);
mayMerge.set(segmentCount > maxNumSegments);
writer.forceMerge(maxNumSegments);
}