1818import org .elasticsearch .cluster .metadata .ProjectMetadata ;
1919import org .elasticsearch .common .Strings ;
2020import org .elasticsearch .common .settings .Settings ;
21+ import org .elasticsearch .core .Nullable ;
2122import org .elasticsearch .index .Index ;
2223import org .elasticsearch .license .XPackLicenseState ;
2324import org .elasticsearch .xcontent .ToXContentObject ;
@@ -444,22 +445,26 @@ static ClusterState addStepInfoToClusterState(Index index, ClusterState clusterS
444445 */
445446 public static ClusterState removePolicyForIndexes (final Index [] indices , ClusterState currentState , List <String > failedIndexes ) {
446447 final ProjectMetadata currentProject = currentState .metadata ().getProject ();
447- final ProjectMetadata updatedProject = removePolicyForIndexes (indices , currentProject , failedIndexes );
448+ final ProjectMetadata . Builder updatedProject = removePolicyForIndexes (indices , currentProject , failedIndexes );
448449
449- if (currentProject == updatedProject ) {
450+ if (updatedProject == null ) {
450451 return currentState ;
451452 } else {
452453 return ClusterState .builder (currentState ).putProjectMetadata (updatedProject ).build ();
453454 }
454455 }
455456
456- private static ProjectMetadata removePolicyForIndexes (
457+ /**
458+ * @return If one or more policies were removed, then a new builder representing the changed project state.
459+ * Otherwise {@code null} (if no changes were made)
460+ */
461+ @ Nullable
462+ private static ProjectMetadata .Builder removePolicyForIndexes (
457463 final Index [] indices ,
458464 ProjectMetadata currentProject ,
459465 List <String > failedIndexes
460466 ) {
461- ProjectMetadata .Builder newProject = ProjectMetadata .builder (currentProject );
462- boolean projectChanged = false ;
467+ ProjectMetadata .Builder newProject = null ;
463468 for (Index index : indices ) {
464469 IndexMetadata indexMetadata = currentProject .index (index );
465470 if (indexMetadata == null ) {
@@ -468,16 +473,15 @@ private static ProjectMetadata removePolicyForIndexes(
468473 } else {
469474 IndexMetadata .Builder newIdxMetadata = removePolicyForIndex (indexMetadata );
470475 if (newIdxMetadata != null ) {
476+ if (newProject == null ) {
477+ newProject = ProjectMetadata .builder (currentProject );
478+ }
471479 newProject .put (newIdxMetadata );
472- projectChanged = true ;
473480 }
474481 }
475482 }
476- if (projectChanged ) {
477- return newProject .build ();
478- } else {
479- return currentProject ;
480- }
483+
484+ return newProject ;
481485 }
482486
483487 /**
0 commit comments