Skip to content

Commit f50a5ee

Browse files
committed
Stop getSafeCommitInfo() blocking on engine reset
Change IndexShard.getSafeCommitInfo() to stop blocking on engine reset. This eliminates deadlock risk between engine reset and retention lease syncing. Relates ES-13669
1 parent b4d23a9 commit f50a5ee

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

server/src/main/java/org/elasticsearch/index/shard/IndexShard.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3778,9 +3778,12 @@ public boolean useRetentionLeasesInPeerRecovery() {
37783778
return useRetentionLeasesInPeerRecovery;
37793779
}
37803780

3781+
/**
3782+
* @return SafeCommitInfo of the current engine. But if engine is null or engine is locked for reset then returns SafeCommitInfo.EMPTY.
3783+
*/
37813784
private SafeCommitInfo getSafeCommitInfo() {
3782-
final Engine engine = getEngineOrNull();
3783-
return engine == null ? SafeCommitInfo.EMPTY : engine.getSafeCommitInfo();
3785+
return tryWithEngineOrNull(engine -> engine == null ? SafeCommitInfo.EMPTY : engine.getSafeCommitInfo());
3786+
37843787
}
37853788

37863789
class ShardEventListener implements Engine.EventListener {

0 commit comments

Comments
 (0)