From e8aef400aa5c882863601470ac366608d1b76ee0 Mon Sep 17 00:00:00 2001 From: Martijn van Groningen Date: Thu, 16 Sep 2021 14:29:44 +0200 Subject: [PATCH] Reduce the number of times that `LifecycleExecutionState` is parsed when running a policy. Sometimes the parsing done by `getCurrentStep()` method is unnecessary, because the method calling the `getCurrentStep()` method has already parsed a `LifecycleExecutionState` instance and can just provide that. Relates to #77466 --- .../xpack/ilm/IndexLifecycleRunner.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycleRunner.java b/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycleRunner.java index d99a9d74c942f..f61934ff4693e 100644 --- a/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycleRunner.java +++ b/x-pack/plugin/ilm/src/main/java/org/elasticsearch/xpack/ilm/IndexLifecycleRunner.java @@ -62,6 +62,13 @@ class IndexLifecycleRunner { */ static Step getCurrentStep(PolicyStepsRegistry stepRegistry, String policy, IndexMetadata indexMetadata) { LifecycleExecutionState lifecycleState = LifecycleExecutionState.fromIndexMetadata(indexMetadata); + return getCurrentStep(stepRegistry, policy, indexMetadata, lifecycleState); + } + + static Step getCurrentStep(PolicyStepsRegistry stepRegistry, + String policy, + IndexMetadata indexMetadata, + LifecycleExecutionState lifecycleState) { StepKey currentStepKey = LifecycleExecutionState.getCurrentStepKey(lifecycleState); logger.trace("[{}] retrieved current step key: {}", indexMetadata.getIndex().getName(), currentStepKey); if (currentStepKey == null) { @@ -126,7 +133,7 @@ void runPeriodicStep(String policy, Metadata metadata, IndexMetadata indexMetada LifecycleExecutionState lifecycleState = LifecycleExecutionState.fromIndexMetadata(indexMetadata); final Step currentStep; try { - currentStep = getCurrentStep(stepRegistry, policy, indexMetadata); + currentStep = getCurrentStep(stepRegistry, policy, indexMetadata, lifecycleState); } catch (Exception e) { markPolicyRetrievalError(policy, indexMetadata.getIndex(), lifecycleState, e); return; @@ -261,7 +268,7 @@ void maybeRunAsyncAction(ClusterState currentState, IndexMetadata indexMetadata, LifecycleExecutionState lifecycleState = LifecycleExecutionState.fromIndexMetadata(indexMetadata); final Step currentStep; try { - currentStep = getCurrentStep(stepRegistry, policy, indexMetadata); + currentStep = getCurrentStep(stepRegistry, policy, indexMetadata, lifecycleState); } catch (Exception e) { markPolicyRetrievalError(policy, indexMetadata.getIndex(), lifecycleState, e); return; @@ -322,7 +329,7 @@ void runPolicyAfterStateChange(String policy, IndexMetadata indexMetadata) { LifecycleExecutionState lifecycleState = LifecycleExecutionState.fromIndexMetadata(indexMetadata); final Step currentStep; try { - currentStep = getCurrentStep(stepRegistry, policy, indexMetadata); + currentStep = getCurrentStep(stepRegistry, policy, indexMetadata, lifecycleState); } catch (Exception e) { markPolicyRetrievalError(policy, indexMetadata.getIndex(), lifecycleState, e); return;