mirror of
https://github.com/apache/lucene.git
synced 2025-02-07 18:49:03 +00:00
make MockRandomMergePolicy a bit smarter
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1395689 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
0fdedf94a8
commit
0933faf06b
@ -3367,9 +3367,15 @@ public class IndexWriter implements Closeable, TwoPhaseCommit {
|
||||
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) {
|
||||
|
@ -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 extends MergePolicy {
|
||||
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)));
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user