From 31c8427476e567071ea017837722b65b118955e2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 7 Aug 2025 06:57:12 +0000 Subject: [PATCH] Fix segment replication bug during primary relocation (#18944) * Fix segment replication bug during primary relocation Signed-off-by: Ashish Singh * Fix applicable for segrep local indexes only Signed-off-by: Ashish Singh --------- Signed-off-by: Ashish Singh (cherry picked from commit 251cc3603e73405cc047e192663e8b5dbaa1c61d) Signed-off-by: github-actions[bot] --- .../AbstractSegmentReplicationTarget.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/server/src/main/java/org/opensearch/indices/replication/AbstractSegmentReplicationTarget.java b/server/src/main/java/org/opensearch/indices/replication/AbstractSegmentReplicationTarget.java index 2275034f1ec81..5a21b10d04c06 100644 --- a/server/src/main/java/org/opensearch/indices/replication/AbstractSegmentReplicationTarget.java +++ b/server/src/main/java/org/opensearch/indices/replication/AbstractSegmentReplicationTarget.java @@ -162,6 +162,20 @@ public void startReplication(ActionListener listener, BiConsumer { + ReplicationCheckpoint getMetadataCheckpoint = checkpointInfo.getCheckpoint(); + if (indexShard.indexSettings().isSegRepLocalEnabled() && checkpoint.isAheadOf(getMetadataCheckpoint)) { + // Fixes https://github.com/opensearch-project/OpenSearch/issues/18490 + listener.onFailure( + new ReplicationFailedException( + "Rejecting stale metadata checkpoint [" + + getMetadataCheckpoint + + "] since initial checkpoint [" + + checkpoint + + "] is ahead of it" + ) + ); + return; + } updateCheckpoint(checkpointInfo.getCheckpoint(), checkpointUpdater); final List filesToFetch = getFiles(checkpointInfo); state.setStage(SegmentReplicationState.Stage.GET_FILES);