From 7d3a737ee8e64fcc436b415d83a99d63ca5faadf Mon Sep 17 00:00:00 2001 From: Suraj Singh Date: Fri, 26 May 2023 16:38:28 -0700 Subject: [PATCH] [Segment Replication] Remove codec name string match check for checkpoints (#7741) (#7786) * Remove codec name string match check for checkpoints * changelog added --------- Signed-off-by: Poojita Raj Co-authored-by: Poojita Raj --- CHANGELOG.md | 1 + .../opensearch/index/shard/IndexShard.java | 6 --- .../OngoingSegmentReplications.java | 7 ---- .../OngoingSegmentReplicationsTests.java | 41 +------------------ 4 files changed, 2 insertions(+), 53 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32a7678d9ea0d..f7bfca5add3a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - OpenJDK Update (April 2023 Patch releases) ([#7448](https://github.com/opensearch-project/OpenSearch/pull/7448) ### Changed +- [Segment Replication] Remove codec name string match check for checkpoints ([#7741](https://github.com/opensearch-project/OpenSearch/pull/7741)) ### Deprecated diff --git a/server/src/main/java/org/opensearch/index/shard/IndexShard.java b/server/src/main/java/org/opensearch/index/shard/IndexShard.java index 98a39d5f6fef0..7011df6b64c1a 100644 --- a/server/src/main/java/org/opensearch/index/shard/IndexShard.java +++ b/server/src/main/java/org/opensearch/index/shard/IndexShard.java @@ -1623,12 +1623,6 @@ public final boolean shouldProcessCheckpoint(ReplicationCheckpoint requestCheckp ); return false; } - if (localCheckpoint.getCodec().equals(requestCheckpoint.getCodec()) == false) { - logger.trace( - () -> new ParameterizedMessage("Shard does not support the received lucene codec version {}", requestCheckpoint.getCodec()) - ); - return false; - } return true; } diff --git a/server/src/main/java/org/opensearch/indices/replication/OngoingSegmentReplications.java b/server/src/main/java/org/opensearch/indices/replication/OngoingSegmentReplications.java index 3ab0a7539fb06..6f04c6cf6f665 100644 --- a/server/src/main/java/org/opensearch/indices/replication/OngoingSegmentReplications.java +++ b/server/src/main/java/org/opensearch/indices/replication/OngoingSegmentReplications.java @@ -14,7 +14,6 @@ import org.opensearch.OpenSearchException; import org.opensearch.action.ActionListener; import org.opensearch.cluster.node.DiscoveryNode; -import org.opensearch.common.util.CancellableThreads; import org.opensearch.common.util.concurrent.ConcurrentCollections; import org.opensearch.index.IndexService; import org.opensearch.index.shard.IndexShard; @@ -148,12 +147,6 @@ void startSegmentCopy(GetSegmentFilesRequest request, ActionListener { if (segrepHandler != null) { logger.warn("Override handler for allocation id {}", request.getTargetAllocationId()); diff --git a/server/src/test/java/org/opensearch/indices/replication/OngoingSegmentReplicationsTests.java b/server/src/test/java/org/opensearch/indices/replication/OngoingSegmentReplicationsTests.java index 6e27a4db6afec..677352cdd5120 100644 --- a/server/src/test/java/org/opensearch/indices/replication/OngoingSegmentReplicationsTests.java +++ b/server/src/test/java/org/opensearch/indices/replication/OngoingSegmentReplicationsTests.java @@ -48,7 +48,7 @@ public class OngoingSegmentReplicationsTests extends IndexShardTestCase { private final IndicesService mockIndicesService = mock(IndicesService.class); - private ReplicationCheckpoint testCheckpoint, olderCodecTestCheckpoint; + private ReplicationCheckpoint testCheckpoint; private DiscoveryNode primaryDiscoveryNode; private DiscoveryNode replicaDiscoveryNode; private IndexShard primary; @@ -79,7 +79,6 @@ public void setUp() throws Exception { // This mirrors the creation of the ReplicationCheckpoint inside CopyState testCheckpoint = new ReplicationCheckpoint(testShardId, primary.getOperationPrimaryTerm(), 0L, 0L, defaultCodecName); - olderCodecTestCheckpoint = new ReplicationCheckpoint(testShardId, primary.getOperationPrimaryTerm(), 0L, 0L, "Lucene94"); IndexService mockIndexService = mock(IndexService.class); when(mockIndicesService.indexServiceSafe(testShardId.getIndex())).thenReturn(mockIndexService); when(mockIndexService.getShard(testShardId.id())).thenReturn(primary); @@ -94,44 +93,6 @@ public void tearDown() throws Exception { super.tearDown(); } - public void testSuccessfulCodecCompatibilityCheck() throws Exception { - indexDoc(primary, "1", "{\"foo\" : \"baz\"}", XContentType.JSON, "foobar"); - primary.refresh("Test"); - OngoingSegmentReplications replications = spy(new OngoingSegmentReplications(mockIndicesService, recoverySettings)); - // replica checkpoint is on same/higher lucene codec than primary - final CheckpointInfoRequest request = new CheckpointInfoRequest( - 1L, - replica.routingEntry().allocationId().getId(), - replicaDiscoveryNode, - testCheckpoint - ); - final FileChunkWriter segmentSegmentFileChunkWriter = (fileMetadata, position, content, lastChunk, totalTranslogOps, listener) -> { - listener.onResponse(null); - }; - final CopyState copyState = replications.prepareForReplication(request, segmentSegmentFileChunkWriter); - } - - public void testFailCodecCompatibilityCheck() throws Exception { - indexDoc(primary, "1", "{\"foo\" : \"baz\"}", XContentType.JSON, "foobar"); - primary.refresh("Test"); - OngoingSegmentReplications replications = spy(new OngoingSegmentReplications(mockIndicesService, recoverySettings)); - // replica checkpoint is on lower/older lucene codec than primary - final CheckpointInfoRequest request = new CheckpointInfoRequest( - 1L, - replica.routingEntry().allocationId().getId(), - replicaDiscoveryNode, - olderCodecTestCheckpoint - ); - final FileChunkWriter segmentSegmentFileChunkWriter = (fileMetadata, position, content, lastChunk, totalTranslogOps, listener) -> { - listener.onResponse(null); - }; - try { - final CopyState copyState = replications.prepareForReplication(request, segmentSegmentFileChunkWriter); - } catch (CancellableThreads.ExecutionCancelledException ex) { - Assert.assertTrue(ex.getMessage().contains("Requested unsupported codec version")); - } - } - public void testPrepareAndSendSegments() throws IOException { indexDoc(primary, "1", "{\"foo\" : \"baz\"}", XContentType.JSON, "foobar"); primary.refresh("Test");