From 87ad80f214bbac9c6657ff2adde3143186a25b08 Mon Sep 17 00:00:00 2001 From: Yannick Welsch Date: Tue, 22 May 2018 14:27:15 +0200 Subject: [PATCH] simplify installTokenMetadata --- .../xpack/security/authc/TokenService.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/TokenService.java b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/TokenService.java index 05ca6d9c0b90b..2934fb8062de4 100644 --- a/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/TokenService.java +++ b/x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/TokenService.java @@ -1376,14 +1376,15 @@ private void initialize(ClusterService clusterService) { }); } - private final AtomicBoolean installTokenMetadataCheck = new AtomicBoolean(false); + // to prevent too many cluster state update tasks to be queued for doing the same update + private final AtomicBoolean installTokenMetadataInProgress = new AtomicBoolean(false); private void installTokenMetadata(MetaData metaData) { if (metaData.custom(TokenMetaData.TYPE) == null) { - if (installTokenMetadataCheck.compareAndSet(false, true)) { + if (installTokenMetadataInProgress.compareAndSet(false, true)) { clusterService.submitStateUpdateTask("install-token-metadata", new ClusterStateUpdateTask(Priority.URGENT) { @Override - public ClusterState execute(ClusterState currentState) throws Exception { + public ClusterState execute(ClusterState currentState) { XPackPlugin.checkReadyForXPackCustomMetadata(currentState); if (currentState.custom(TokenMetaData.TYPE) == null) { @@ -1395,13 +1396,16 @@ public ClusterState execute(ClusterState currentState) throws Exception { @Override public void onFailure(String source, Exception e) { - installTokenMetadataCheck.set(false); + installTokenMetadataInProgress.set(false); logger.error("unable to install token metadata", e); } + + @Override + public void clusterStateProcessed(String source, ClusterState oldState, ClusterState newState) { + installTokenMetadataInProgress.set(false); + } }); } - } else { - installTokenMetadataCheck.set(false); } }