Skip to content

Commit

Permalink
[Segment Replication] Remove codec name string match check for checkp…
Browse files Browse the repository at this point in the history
…oints (#7741) (#7744)

* Remove codec name string match check for checkpoints



* changelog added



---------


(cherry picked from commit 89edd55)

Signed-off-by: Poojita Raj <[email protected]>
Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Signed-off-by: Suraj Singh <[email protected]>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Suraj Singh <[email protected]>
  • Loading branch information
3 people authored May 25, 2023
1 parent bbbe203 commit 6ea325c
Show file tree
Hide file tree
Showing 4 changed files with 2 additions and 53 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
- Moved concurrent-search from sandbox plugin to server module behind feature flag ([#7203](https://github.com/opensearch-project/OpenSearch/pull/7203))
- Allow access to indices cache clear APIs for read only indexes ([#7303](https://github.com/opensearch-project/OpenSearch/pull/7303))
- 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))
- Changed concurrent-search threadpool type to be resizable and support task resource tracking ([#7502](https://github.com/opensearch-project/OpenSearch/pull/7502))

### Deprecated
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1635,12 +1635,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;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -148,12 +147,6 @@ void startSegmentCopy(GetSegmentFilesRequest request, ActionListener<GetSegmentF
*/
CopyState prepareForReplication(CheckpointInfoRequest request, FileChunkWriter fileChunkWriter) throws IOException {
final CopyState copyState = getCachedCopyState(request.getCheckpoint());
if (copyState.getCheckpoint().getCodec().equals(request.getCheckpoint().getCodec()) == false) {
logger.trace("Requested unsupported codec version {}", request.getCheckpoint().getCodec());
throw new CancellableThreads.ExecutionCancelledException(
new ParameterizedMessage("Requested unsupported codec version {}", request.getCheckpoint().getCodec()).toString()
);
}
allocationIdToHandlers.compute(request.getTargetAllocationId(), (allocationId, segrepHandler) -> {
if (segrepHandler != null) {
logger.warn("Override handler for allocation id {}", request.getTargetAllocationId());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand All @@ -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");
Expand Down

0 comments on commit 6ea325c

Please sign in to comment.