Skip to content

Commit

Permalink
Addressing PR comments
Browse files Browse the repository at this point in the history
Signed-off-by: Ankit Kala <[email protected]>
  • Loading branch information
ankitkala committed Sep 8, 2022
1 parent f3a18b8 commit 6984436
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2355,10 +2355,12 @@ public Translog.Snapshot getHistoryOperations(String reason, long startingSeqNo,
/**
* Creates a new history snapshot from the translog instead of the lucene index. Required for cross cluster replication.
* Use the recommended {@link #getHistoryOperations(String, long, long, boolean)} method for other cases.
* Depending on how translog durability is configured, this method might/might not return the snapshot. For e.g,
* If the translog has been configured with no-durability, it'll return UnsupportedOperationException.
* This method should only be invoked if Segment Replication is not enabled.
*/
public Translog.Snapshot getHistoryOperationsFromTranslog(long startingSeqNo, long endSeqNo) throws IOException {
if (indexSettings.isSegRepEnabled()) {
throw new AssertionError("newChangesSnapshot should not be invoked for Segment Replication enabled indices");
}
return getEngine().translogManager().newChangesSnapshot(startingSeqNo, endSeqNo, true);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1196,6 +1196,36 @@ public void testAcquireReplicaPermitAdvanceMaxSeqNoOfUpdates() throws Exception
closeShards(replica);
}


public void testGetChangesSnapshotThrowsAssertForSegRep() throws IOException {
final ShardId shardId = new ShardId("index", "_na_", 0);
final ShardRouting shardRouting = TestShardRouting.newShardRouting(
shardId,
randomAlphaOfLength(8),
true,
ShardRoutingState.INITIALIZING,
RecoverySource.EmptyStoreRecoverySource.INSTANCE
);
final Settings settings = Settings.builder()
.put(IndexMetadata.SETTING_VERSION_CREATED, Version.CURRENT)
.put(IndexMetadata.SETTING_NUMBER_OF_REPLICAS, 2)
.put(IndexMetadata.SETTING_NUMBER_OF_SHARDS, 1)
.build();
final IndexMetadata.Builder indexMetadata = IndexMetadata.builder(shardRouting.getIndexName()).settings(settings).primaryTerm(0, 1);
final AtomicBoolean synced = new AtomicBoolean();
final IndexShard primaryShard = newShard(
shardRouting,
indexMetadata.build(),
null,
new InternalEngineFactory(),
() -> synced.set(true),
RetentionLeaseSyncer.EMPTY,
null
);

expectThrows(AssertionError.class, () -> primaryShard.getHistoryOperationsFromTranslog(0, 1));
}

public void testGlobalCheckpointSync() throws IOException {
// create the primary shard with a callback that sets a boolean when the global checkpoint sync is invoked
final ShardId shardId = new ShardId("index", "_na_", 0);
Expand Down

0 comments on commit 6984436

Please sign in to comment.