diff --git a/server/src/main/java/org/elasticsearch/index/shard/IndexShard.java b/server/src/main/java/org/elasticsearch/index/shard/IndexShard.java index 01b7e63280d77..58649fe005110 100644 --- a/server/src/main/java/org/elasticsearch/index/shard/IndexShard.java +++ b/server/src/main/java/org/elasticsearch/index/shard/IndexShard.java @@ -1386,7 +1386,7 @@ public CommitStats commitStats() { * @throws AlreadyClosedException if shard is closed */ public SeqNoStats seqNoStats() { - return getEngine().getSeqNoStats(replicationTracker.getGlobalCheckpoint()); + return withEngine(engine -> engine.getSeqNoStats(getLastKnownGlobalCheckpoint())); } public IndexingStats indexingStats() { @@ -3061,7 +3061,7 @@ public void maybeSyncGlobalCheckpoint(final String reason) { } assert assertPrimaryMode(); // only sync if there are no operations in flight, or when using async durability - final SeqNoStats stats = getEngine().getSeqNoStats(replicationTracker.getGlobalCheckpoint()); + final SeqNoStats stats = seqNoStats(); final boolean asyncDurability = indexSettings().getTranslogDurability() == Translog.Durability.ASYNC; if (stats.getMaxSeqNo() == stats.getGlobalCheckpoint() || asyncDurability) { final var trackedGlobalCheckpointsNeedSync = replicationTracker.trackedGlobalCheckpointsNeedSync(); diff --git a/server/src/main/java/org/elasticsearch/index/shard/LocalShardSnapshot.java b/server/src/main/java/org/elasticsearch/index/shard/LocalShardSnapshot.java index 5f888ed90c666..c80addb9aa3be 100644 --- a/server/src/main/java/org/elasticsearch/index/shard/LocalShardSnapshot.java +++ b/server/src/main/java/org/elasticsearch/index/shard/LocalShardSnapshot.java @@ -40,7 +40,7 @@ Index getIndex() { } long maxSeqNo() { - return shard.getEngine().getSeqNoStats(-1).getMaxSeqNo(); + return shard.withEngine(engine -> engine.getSeqNoStats(-1)).getMaxSeqNo(); } long maxUnsafeAutoIdTimestamp() { diff --git a/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/ShardChangesAction.java b/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/ShardChangesAction.java index 0fef8e13dff08..9d7aa49f4e1d6 100644 --- a/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/ShardChangesAction.java +++ b/x-pack/plugin/ccr/src/main/java/org/elasticsearch/xpack/ccr/action/ShardChangesAction.java @@ -403,13 +403,13 @@ protected void asyncShardOperation(final Request request, final ShardId shardId, throws IOException { final IndexService indexService = indicesService.indexServiceSafe(request.getShard().getIndex()); final IndexShard indexShard = indexService.getShard(request.getShard().id()); - final SeqNoStats seqNoStats = indexShard.seqNoStats(); + final long lastKnownGlobalCheckpoint = indexShard.getLastKnownGlobalCheckpoint(); - if (request.getFromSeqNo() > seqNoStats.getGlobalCheckpoint()) { + if (request.getFromSeqNo() > lastKnownGlobalCheckpoint) { logger.trace( "{} waiting for global checkpoint advancement from [{}] to [{}]", shardId, - seqNoStats.getGlobalCheckpoint(), + lastKnownGlobalCheckpoint, request.getFromSeqNo() ); indexShard.addGlobalCheckpointListener(request.getFromSeqNo(), new GlobalCheckpointListeners.GlobalCheckpointListener() { diff --git a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/action/TransportGetCheckpointNodeAction.java b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/action/TransportGetCheckpointNodeAction.java index 63b9dc7ae3fbb..336a52403a85c 100644 --- a/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/action/TransportGetCheckpointNodeAction.java +++ b/x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/action/TransportGetCheckpointNodeAction.java @@ -96,7 +96,7 @@ protected static void getGlobalCheckpoints( Arrays.fill(seqNumbers, SequenceNumbers.UNASSIGNED_SEQ_NO); return seqNumbers; }); - checkpointsByIndexOfThisNode.get(shardId.getIndexName())[shardId.getId()] = indexShard.seqNoStats().getGlobalCheckpoint(); + checkpointsByIndexOfThisNode.get(shardId.getIndexName())[shardId.getId()] = indexShard.getLastKnownGlobalCheckpoint(); ++numProcessedShards; } catch (Exception e) { logger.atDebug()