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/08 19:41:16 UTC
svn commit: r1395689 - in /lucene/dev/trunk/lucene:
core/src/java/org/apache/lucene/index/IndexWriter.java
test-framework/src/java/org/apache/lucene/index/MockRandomMergePolicy.java
Author: mikemccand
Date: Mon Oct 8 17:41:15 2012
New Revision: 1395689
URL: http://svn.apache.org/viewvc?rev=1395689&view=rev
Log:
make MockRandomMergePolicy a bit smarter
Modified:
lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/MockRandomMergePolicy.java
Modified: lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java?rev=1395689&r1=1395688&r2=1395689&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java (original)
+++ lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/index/IndexWriter.java Mon Oct 8 17:41:15 2012
@@ -3367,9 +3367,15 @@ public class IndexWriter implements Clos
boolean isExternal = false;
for(SegmentInfoPerCommit info : merge.segments) {
if (mergingSegments.contains(info)) {
+ if (infoStream.isEnabled("IW")) {
+ infoStream.message("IW", "reject merge " + segString(merge.segments) + ": segment " + segString(info) + " is already marked for merge");
+ }
return false;
}
if (!segmentInfos.contains(info)) {
+ if (infoStream.isEnabled("IW")) {
+ infoStream.message("IW", "reject merge " + segString(merge.segments) + ": segment " + segString(info) + " does not exist in live infos");
+ }
return false;
}
if (info.info.dir != directory) {
Modified: lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/MockRandomMergePolicy.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/MockRandomMergePolicy.java?rev=1395689&r1=1395688&r2=1395689&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/MockRandomMergePolicy.java (original)
+++ lucene/dev/trunk/lucene/test-framework/src/java/org/apache/lucene/index/MockRandomMergePolicy.java Mon Oct 8 17:41:15 2012
@@ -19,10 +19,11 @@ package org.apache.lucene.index;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import java.util.Random;
import java.util.Map;
+import java.util.Random;
import org.apache.lucene.util._TestUtil;
@@ -43,14 +44,26 @@ public class MockRandomMergePolicy exten
MergeSpecification mergeSpec = null;
//System.out.println("MRMP: findMerges sis=" + segmentInfos);
- if (segmentInfos.size() > 1 && random.nextInt(5) == 3) {
-
- List<SegmentInfoPerCommit> segments = new ArrayList<SegmentInfoPerCommit>(segmentInfos.asList());
+ int numSegments = segmentInfos.size();
+
+ List<SegmentInfoPerCommit> segments = new ArrayList<SegmentInfoPerCommit>();
+ final Collection<SegmentInfoPerCommit> merging = writer.get().getMergingSegments();
+
+ for(SegmentInfoPerCommit sipc : segmentInfos) {
+ if (!merging.contains(sipc)) {
+ segments.add(sipc);
+ }
+ }
+
+ numSegments = segments.size();
+
+ if (numSegments > 1 && (numSegments > 30 || random.nextInt(5) == 3)) {
+
Collections.shuffle(segments, random);
// TODO: sometimes make more than 1 merge?
mergeSpec = new MergeSpecification();
- final int segsToMerge = _TestUtil.nextInt(random, 1, segmentInfos.size());
+ final int segsToMerge = _TestUtil.nextInt(random, 1, numSegments);
mergeSpec.add(new OneMerge(segments.subList(0, segsToMerge)));
}