Skip to content

Commit aae5c30

Browse files
committed
address review
1 parent 132579b commit aae5c30

File tree

6 files changed

+25
-16
lines changed

6 files changed

+25
-16
lines changed

server/src/main/java/org/apache/lucene/index/ShuflleForcedMergePolicy.java renamed to server/src/main/java/org/apache/lucene/index/ShuffleForcedMergePolicy.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@
3434
* and {@link MergePolicy#findForcedDeletesMerges}. This allows time-based indices, that usually have the eldest documents
3535
* first, to be efficient at finding the most recent documents too.
3636
*/
37-
public class ShuflleForcedMergePolicy extends FilterMergePolicy {
37+
public class ShuffleForcedMergePolicy extends FilterMergePolicy {
3838
private static final String SHUFFLE_MERGE_KEY = "es.shuffle_merge";
3939

40-
public ShuflleForcedMergePolicy(MergePolicy in) {
40+
public ShuffleForcedMergePolicy(MergePolicy in) {
4141
super(in);
4242
}
4343

@@ -68,7 +68,7 @@ private MergeSpecification wrap(MergeSpecification mergeSpec) throws IOException
6868
}
6969
MergeSpecification newMergeSpec = new MergeSpecification();
7070
for (OneMerge toWrap : mergeSpec.merges) {
71-
List<SegmentCommitInfo> newInfos = interleaveList(toWrap.segments);
71+
List<SegmentCommitInfo> newInfos = interleaveList(new ArrayList<>(toWrap.segments));
7272
newMergeSpec.add(new OneMerge(newInfos) {
7373
@Override
7474
public CodecReader wrapForMerge(CodecReader reader) throws IOException {

server/src/main/java/org/elasticsearch/index/engine/InternalEngine.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
import org.apache.lucene.index.MergePolicy;
3737
import org.apache.lucene.index.SegmentCommitInfo;
3838
import org.apache.lucene.index.SegmentInfos;
39-
import org.apache.lucene.index.ShuflleForcedMergePolicy;
39+
import org.apache.lucene.index.ShuffleForcedMergePolicy;
4040
import org.apache.lucene.index.SoftDeletesRetentionMergePolicy;
4141
import org.apache.lucene.index.Term;
4242
import org.apache.lucene.search.DocIdSetIterator;
@@ -57,6 +57,7 @@
5757
import org.elasticsearch.Assertions;
5858
import org.elasticsearch.ExceptionsHelper;
5959
import org.elasticsearch.action.index.IndexRequest;
60+
import org.elasticsearch.common.Booleans;
6061
import org.elasticsearch.common.Nullable;
6162
import org.elasticsearch.common.SuppressForbidden;
6263
import org.elasticsearch.common.lease.Releasable;
@@ -2225,10 +2226,13 @@ private IndexWriterConfig getIndexWriterConfig() {
22252226
new SoftDeletesRetentionMergePolicy(Lucene.SOFT_DELETES_FIELD, softDeletesPolicy::getRetentionQuery,
22262227
new PrunePostingsMergePolicy(mergePolicy, IdFieldMapper.NAME)));
22272228
}
2228-
// We wrap the merge policy for all indices even though it is mostly useful for time-based indices
2229-
// but there should be no overhead for other type of indices so it's simpler than adding a setting
2230-
// to enable it.
2231-
mergePolicy = new ShuflleForcedMergePolicy(mergePolicy);
2229+
boolean shuffleForcedMerge = Booleans.parseBoolean(System.getProperty("es.shuffle_forced_merge", Boolean.TRUE.toString()));
2230+
if (shuffleForcedMerge) {
2231+
// We wrap the merge policy for all indices even though it is mostly useful for time-based indices
2232+
// but there should be no overhead for other type of indices so it's simpler than adding a setting
2233+
// to enable it.
2234+
mergePolicy = new ShuffleForcedMergePolicy(mergePolicy);
2235+
}
22322236
iwc.setMergePolicy(new ElasticsearchMergePolicy(mergePolicy));
22332237
iwc.setSimilarity(engineConfig.getSimilarity());
22342238
iwc.setRAMBufferSizeMB(engineConfig.getIndexingBufferSize().getMbFrac());

server/src/main/java/org/elasticsearch/index/shard/ElasticsearchMergePolicy.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ public ElasticsearchMergePolicy(MergePolicy delegate) {
6161
super(delegate);
6262
}
6363

64+
/** return the wrapped merge policy */
65+
public MergePolicy getDelegate() {
66+
return in;
67+
}
68+
6469
private boolean shouldUpgrade(SegmentCommitInfo info) {
6570
org.apache.lucene.util.Version old = info.info.getVersion();
6671
org.apache.lucene.util.Version cur = Version.CURRENT.luceneVersion;

server/src/test/java/org/apache/lucene/index/ShuffleForcedMergePolicyTests.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public class ShuffleForcedMergePolicyTests extends BaseMergePolicyTestCase {
3737
public void testDiagnostics() throws IOException {
3838
try (Directory dir = newDirectory()) {
3939
IndexWriterConfig iwc = newIndexWriterConfig();
40-
MergePolicy mp = new ShuflleForcedMergePolicy(newLogMergePolicy());
40+
MergePolicy mp = new ShuffleForcedMergePolicy(newLogMergePolicy());
4141
iwc.setMergePolicy(mp);
4242
boolean sorted = random().nextBoolean();
4343
if (sorted) {
@@ -58,14 +58,14 @@ public void testDiagnostics() throws IOException {
5858
try (DirectoryReader reader = DirectoryReader.open(writer)) {
5959
assertThat(reader.leaves().size(), greaterThan(2));
6060
assertSegmentReaders(reader, leaf -> {
61-
assertFalse(ShuflleForcedMergePolicy.isInterleavedSegment(leaf));
61+
assertFalse(ShuffleForcedMergePolicy.isInterleavedSegment(leaf));
6262
});
6363
}
6464
writer.forceMerge(1);
6565
try (DirectoryReader reader = DirectoryReader.open(writer)) {
6666
assertThat(reader.leaves().size(), equalTo(1));
6767
assertSegmentReaders(reader, leaf -> {
68-
assertTrue(ShuflleForcedMergePolicy.isInterleavedSegment(leaf));
68+
assertTrue(ShuffleForcedMergePolicy.isInterleavedSegment(leaf));
6969
});
7070
}
7171
}
@@ -80,7 +80,7 @@ private void assertSegmentReaders(DirectoryReader reader, Consumer<LeafReader> c
8080

8181
@Override
8282
protected MergePolicy mergePolicy() {
83-
return new ShuflleForcedMergePolicy(newLogMergePolicy());
83+
return new ShuffleForcedMergePolicy(newLogMergePolicy());
8484
}
8585

8686
@Override

server/src/test/java/org/elasticsearch/index/engine/PrunePostingsMergePolicyTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import org.apache.lucene.index.LeafReader;
3030
import org.apache.lucene.index.MergePolicy;
3131
import org.apache.lucene.index.NumericDocValues;
32-
import org.apache.lucene.index.ShuflleForcedMergePolicy;
32+
import org.apache.lucene.index.ShuffleForcedMergePolicy;
3333
import org.apache.lucene.index.SoftDeletesRetentionMergePolicy;
3434
import org.apache.lucene.index.Term;
3535
import org.apache.lucene.index.Terms;
@@ -52,7 +52,7 @@ public void testPrune() throws IOException {
5252
iwc.setSoftDeletesField("_soft_deletes");
5353
MergePolicy mp = new SoftDeletesRetentionMergePolicy("_soft_deletes", MatchAllDocsQuery::new,
5454
new PrunePostingsMergePolicy(newLogMergePolicy(), "id"));
55-
iwc.setMergePolicy(new ShuflleForcedMergePolicy(mp));
55+
iwc.setMergePolicy(new ShuffleForcedMergePolicy(mp));
5656
boolean sorted = randomBoolean();
5757
if (sorted) {
5858
iwc.setIndexSort(new Sort(new SortField("sort", SortField.Type.INT)));

server/src/test/java/org/elasticsearch/index/engine/RecoverySourcePruneMergePolicyTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
import org.apache.lucene.index.NumericDocValues;
3535
import org.apache.lucene.index.SegmentCommitInfo;
3636
import org.apache.lucene.index.SegmentInfos;
37-
import org.apache.lucene.index.ShuflleForcedMergePolicy;
37+
import org.apache.lucene.index.ShuffleForcedMergePolicy;
3838
import org.apache.lucene.index.StandardDirectoryReader;
3939
import org.apache.lucene.index.Term;
4040
import org.apache.lucene.search.DocIdSetIterator;
@@ -58,7 +58,7 @@ public void testPruneAll() throws IOException {
5858
IndexWriterConfig iwc = newIndexWriterConfig();
5959
RecoverySourcePruneMergePolicy mp = new RecoverySourcePruneMergePolicy("extra_source", MatchNoDocsQuery::new,
6060
newLogMergePolicy());
61-
iwc.setMergePolicy(new ShuflleForcedMergePolicy(mp));
61+
iwc.setMergePolicy(new ShuffleForcedMergePolicy(mp));
6262
try (IndexWriter writer = new IndexWriter(dir, iwc)) {
6363
for (int i = 0; i < 20; i++) {
6464
if (i > 0 && randomBoolean()) {

0 commit comments

Comments
 (0)