Fire global checkpoint sync under system context

The global checkpoint sync action should fire under the system context
since it is not a user-facing management action.

Relates #26984
This commit is contained in:
Jason Tedor 2017-10-12 09:18:58 -04:00 committed by GitHub
parent cee9640c20
commit f81ee225ff
1 changed files with 13 additions and 7 deletions

View File

@ -35,6 +35,7 @@ import org.elasticsearch.cluster.node.DiscoveryNode;
import org.elasticsearch.cluster.service.ClusterService; import org.elasticsearch.cluster.service.ClusterService;
import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.inject.Inject;
import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.util.concurrent.ThreadContext;
import org.elasticsearch.index.shard.IndexShard; import org.elasticsearch.index.shard.IndexShard;
import org.elasticsearch.index.shard.IndexShardClosedException; import org.elasticsearch.index.shard.IndexShardClosedException;
import org.elasticsearch.index.shard.ShardId; import org.elasticsearch.index.shard.ShardId;
@ -80,13 +81,18 @@ public class GlobalCheckpointSyncAction extends TransportReplicationAction<
} }
public void updateGlobalCheckpointForShard(final ShardId shardId) { public void updateGlobalCheckpointForShard(final ShardId shardId) {
execute( final ThreadContext threadContext = threadPool.getThreadContext();
new Request(shardId), try (ThreadContext.StoredContext ignore = threadContext.stashContext()) {
ActionListener.wrap(r -> {}, e -> { threadContext.markAsSystemContext();
if (ExceptionsHelper.unwrap(e, AlreadyClosedException.class, IndexShardClosedException.class) == null) { execute(
logger.info(new ParameterizedMessage("{} global checkpoint sync failed", shardId), e); new Request(shardId),
} ActionListener.wrap(r -> {
})); }, e -> {
if (ExceptionsHelper.unwrap(e, AlreadyClosedException.class, IndexShardClosedException.class) == null) {
logger.info(new ParameterizedMessage("{} global checkpoint sync failed", shardId), e);
}
}));
}
} }
@Override @Override