diff --git a/server/src/main/java/org/elasticsearch/index/IndexService.java b/server/src/main/java/org/elasticsearch/index/IndexService.java index dc5850e53b642..e14a718f0836d 100644 --- a/server/src/main/java/org/elasticsearch/index/IndexService.java +++ b/server/src/main/java/org/elasticsearch/index/IndexService.java @@ -67,6 +67,7 @@ import org.elasticsearch.index.shard.SearchOperationListener; import org.elasticsearch.index.shard.ShardId; import org.elasticsearch.index.shard.ShardNotFoundException; +import org.elasticsearch.index.shard.ShardNotInPrimaryModeException; import org.elasticsearch.index.shard.ShardPath; import org.elasticsearch.index.similarity.SimilarityService; import org.elasticsearch.index.store.Store; @@ -839,14 +840,11 @@ private void sync(final Consumer sync, final String source) { case STARTED: try { shard.runUnderPrimaryPermit( - () -> { - if (shard.isRelocatedPrimary() == false) { - sync.accept(shard); - } - }, + () -> sync.accept(shard), e -> { if (e instanceof AlreadyClosedException == false - && e instanceof IndexShardClosedException == false) { + && e instanceof IndexShardClosedException == false + && e instanceof ShardNotInPrimaryModeException == false) { logger.warn( new ParameterizedMessage( "{} failed to execute {} sync", shard.shardId(), source), e);