From 89edd552313d1a32e6d97c33bb7d2d57e6c7670c Mon Sep 17 00:00:00 2001 From: Poojita Raj Date: Wed, 24 May 2023 15:30:37 -0700 Subject: [PATCH] [Segment Replication] Remove codec name string match check for checkpoints (#7741) * Remove codec name string match check for checkpoints Signed-off-by: Poojita Raj * changelog added Signed-off-by: Poojita Raj --------- Signed-off-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 c3398ddd38279..40912fb67fb73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -133,6 +133,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Allow access to indices cache clear APIs for read only indexes ([#7303](https://github.com/opensearch-project/OpenSearch/pull/7303)) - Changed concurrent-search threadpool type to be resizable and support task resource tracking ([#7502](https://github.com/opensearch-project/OpenSearch/pull/7502)) - Default search preference to _primary for searchable snapshot indices ([#7628](https://github.com/opensearch-project/OpenSearch/pull/7628)) +- [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 b417133e4a89d..ce5d05065860f 100644 --- a/server/src/main/java/org/opensearch/index/shard/IndexShard.java +++ b/server/src/main/java/org/opensearch/index/shard/IndexShard.java @@ -1629,12 +1629,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");