Skip to content

Commit 38cc72c

Browse files
authored
Fix ShuffleForcedMergePolicyTests#testDiagnostics (elastic#122473)
This commit ensures that opening the DirectoryReader won't merge all the segments into one, making the tested force merge a no-op. Closes elastic#121336
1 parent 0810e66 commit 38cc72c

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

muted-tests.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -291,9 +291,6 @@ tests:
291291
- class: org.elasticsearch.env.NodeEnvironmentTests
292292
method: testGetBestDowngradeVersion
293293
issue: https://github.com/elastic/elasticsearch/issues/121316
294-
- class: org.elasticsearch.index.engine.ShuffleForcedMergePolicyTests
295-
method: testDiagnostics
296-
issue: https://github.com/elastic/elasticsearch/issues/121336
297294
- class: org.elasticsearch.smoketest.DocsClientYamlTestSuiteIT
298295
method: test {yaml=reference/rest-api/security/invalidate-tokens/line_194}
299296
issue: https://github.com/elastic/elasticsearch/issues/121337

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.apache.lucene.index.LeafReaderContext;
2121
import org.apache.lucene.index.MergePolicy;
2222
import org.apache.lucene.index.SegmentInfos;
23+
import org.apache.lucene.index.TieredMergePolicy;
2324
import org.apache.lucene.search.Sort;
2425
import org.apache.lucene.search.SortField;
2526
import org.apache.lucene.store.Directory;
@@ -37,7 +38,14 @@ public void testDiagnostics() throws IOException {
3738
IndexWriterConfig iwc = newIndexWriterConfig();
3839
// Disable merging on flush.
3940
iwc.setMaxFullFlushMergeWaitMillis(0L);
40-
MergePolicy mp = new ShuffleForcedMergePolicy(newTieredMergePolicy());
41+
// Even though we set setMaxFullFlushMergeWaitMillis=0, opening the DirectoryReader
42+
// might trigger a merge after flushing the in-memory documents. Therefore, we set
43+
// a high enough number of maxSegmentsPerTier (we index at most 300 documents, and we flush
44+
// a new segment per 10 documents) that would prevent merging all the segments into one and
45+
// making the force merge a no-op.
46+
var tieredMergePolicy = new TieredMergePolicy();
47+
tieredMergePolicy.setSegmentsPerTier(100);
48+
MergePolicy mp = new ShuffleForcedMergePolicy(tieredMergePolicy);
4149
iwc.setMergePolicy(mp);
4250
boolean sorted = random().nextBoolean();
4351
if (sorted) {

0 commit comments

Comments
 (0)