Skip to content

Commit 3d2e827

Browse files
authored
Bump post-recovery merge minimum version (elastic#121997) (elastic#122883)
In elastic#113462 we introduced a version bound on post-recovery merges to avoid a spike of merge activity after an upgrade. At the time there was no `IndexVersion` unique to the 9.x series, but we have such a version now, so this commit properly restricts post-recovery merges to only apply to indices created by versions that support them. Relates ES-9620
1 parent 862a7e1 commit 3d2e827

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

server/src/internalClusterTest/java/org/elasticsearch/indices/recovery/IndexRecoveryIT.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1967,7 +1967,14 @@ public void testPostRecoveryMerge() throws Exception {
19671967
internalCluster().startMasterOnlyNode();
19681968
final var dataNode = internalCluster().startDataOnlyNode();
19691969
final var indexName = randomIdentifier();
1970-
createIndex(indexName, indexSettings(1, 0).put(INDEX_MERGE_ENABLED, false).build());
1970+
final var indexSettingsBuilder = indexSettings(1, 0).put(INDEX_MERGE_ENABLED, false);
1971+
if (randomBoolean()) {
1972+
indexSettingsBuilder.put(
1973+
IndexMetadata.SETTING_VERSION_CREATED,
1974+
IndexVersionUtils.randomVersionBetween(random(), IndexVersions.UPGRADE_TO_LUCENE_10_0_0, IndexVersion.current())
1975+
);
1976+
}
1977+
createIndex(indexName, indexSettingsBuilder.build());
19711978

19721979
final var initialSegmentCount = 20;
19731980
for (int i = 0; i < initialSegmentCount; i++) {
@@ -2051,7 +2058,7 @@ public void testPostRecoveryMergeDisabledOnOlderIndices() throws Exception {
20512058
IndexVersionUtils.randomVersionBetween(
20522059
random(),
20532060
IndexVersionUtils.getLowestWriteCompatibleVersion(),
2054-
IndexVersionUtils.getPreviousVersion(IndexVersions.MERGE_ON_RECOVERY_VERSION)
2061+
IndexVersionUtils.getPreviousVersion(IndexVersions.UPGRADE_TO_LUCENE_10_0_0)
20552062
)
20562063
)
20572064
.build()

server/src/main/java/org/elasticsearch/indices/PostRecoveryMerger.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.elasticsearch.common.util.concurrent.ThrottledTaskRunner;
1919
import org.elasticsearch.core.Releasable;
2020
import org.elasticsearch.core.Strings;
21+
import org.elasticsearch.core.UpdateForV10;
2122
import org.elasticsearch.index.IndexVersions;
2223
import org.elasticsearch.index.shard.IndexShard;
2324
import org.elasticsearch.index.shard.ShardId;
@@ -46,6 +47,7 @@ class PostRecoveryMerger {
4647
private static final boolean TRIGGER_MERGE_AFTER_RECOVERY;
4748

4849
static {
50+
@UpdateForV10(owner = UpdateForV10.Owner.DISTRIBUTED_INDEXING) // remove this escape hatch
4951
final var propertyValue = System.getProperty("es.trigger_merge_after_recovery");
5052
if (propertyValue == null) {
5153
TRIGGER_MERGE_AFTER_RECOVERY = true;
@@ -95,7 +97,7 @@ PeerRecoveryTargetService.RecoveryListener maybeMergeAfterRecovery(
9597
return recoveryListener;
9698
}
9799

98-
if (indexMetadata.getCreationVersion().before(IndexVersions.MERGE_ON_RECOVERY_VERSION)) {
100+
if (indexMetadata.getCreationVersion().before(IndexVersions.UPGRADE_TO_LUCENE_10_0_0)) {
99101
return recoveryListener;
100102
}
101103

0 commit comments

Comments
 (0)