@@ -58,10 +58,22 @@ public class IndexLifecycleMetadata implements Metadata.Custom {
5858
5959 private final Map <String , LifecyclePolicyMetadata > policyMetadatas ;
6060 private final OperationMode operationMode ;
61+ // a slightly different view of the policyMetadatas -- it's hot in a couple of places so we pre-calculate it
62+ private final Map <String , LifecyclePolicy > policies ;
63+
64+ private static Map <String , LifecyclePolicy > policiesMap (final Map <String , LifecyclePolicyMetadata > policyMetadatas ) {
65+ final Map <String , LifecyclePolicy > policies = new HashMap <>(policyMetadatas .size ());
66+ for (LifecyclePolicyMetadata policyMetadata : policyMetadatas .values ()) {
67+ LifecyclePolicy policy = policyMetadata .getPolicy ();
68+ policies .put (policy .getName (), policy );
69+ }
70+ return Collections .unmodifiableMap (policies );
71+ }
6172
6273 public IndexLifecycleMetadata (Map <String , LifecyclePolicyMetadata > policies , OperationMode operationMode ) {
6374 this .policyMetadatas = Collections .unmodifiableMap (policies );
6475 this .operationMode = operationMode ;
76+ this .policies = policiesMap (policyMetadatas );
6577 }
6678
6779 public IndexLifecycleMetadata (StreamInput in ) throws IOException {
@@ -72,6 +84,7 @@ public IndexLifecycleMetadata(StreamInput in) throws IOException {
7284 }
7385 this .policyMetadatas = policies ;
7486 this .operationMode = in .readEnum (OperationMode .class );
87+ this .policies = policiesMap (policyMetadatas );
7588 }
7689
7790 @ Override
@@ -93,13 +106,7 @@ public OperationMode getOperationMode() {
93106 }
94107
95108 public Map <String , LifecyclePolicy > getPolicies () {
96- // note: this loop is unrolled rather than streaming-style because it's hot enough to show up in a flamegraph
97- Map <String , LifecyclePolicy > policies = new HashMap <>(policyMetadatas .size ());
98- for (LifecyclePolicyMetadata policyMetadata : policyMetadatas .values ()) {
99- LifecyclePolicy policy = policyMetadata .getPolicy ();
100- policies .put (policy .getName (), policy );
101- }
102- return Collections .unmodifiableMap (policies );
109+ return policies ;
103110 }
104111
105112 @ Override
0 commit comments