2929import org .elasticsearch .cluster .SnapshotDeletionsInProgress ;
3030import org .elasticsearch .cluster .SnapshotsInProgress ;
3131import org .elasticsearch .cluster .metadata .IndexMetadata ;
32- import org .elasticsearch .cluster .metadata .Metadata ;
3332import org .elasticsearch .cluster .metadata .ProjectId ;
3433import org .elasticsearch .cluster .metadata .ProjectMetadata ;
3534import org .elasticsearch .cluster .metadata .RepositoriesMetadata ;
@@ -288,8 +287,8 @@ public RegisterRepositoryTask(final RepositoriesService repositoriesService, fin
288287
289288 @ Override
290289 public ClusterState execute (ClusterState currentState ) {
291- Metadata . Builder mdBuilder = Metadata . builder ( currentState .metadata ());
292- RepositoriesMetadata repositories = RepositoriesMetadata .get (currentState );
290+ final var project = currentState .metadata (). getDefaultProject ( );
291+ RepositoriesMetadata repositories = RepositoriesMetadata .get (project );
293292 List <RepositoryMetadata > repositoriesMetadata = new ArrayList <>(repositories .repositories ().size () + 1 );
294293 for (RepositoryMetadata repositoryMetadata : repositories .repositories ()) {
295294 if (repositoryMetadata .name ().equals (request .name ())) {
@@ -347,10 +346,9 @@ public ClusterState execute(ClusterState currentState) {
347346 if (found == false ) {
348347 repositoriesMetadata .add (new RepositoryMetadata (request .name (), request .type (), request .settings ()));
349348 }
350- repositories = new RepositoriesMetadata (repositoriesMetadata );
351- mdBuilder .putDefaultProjectCustom (RepositoriesMetadata .TYPE , repositories );
352349 changed = true ;
353- return ClusterState .builder (currentState ).metadata (mdBuilder ).build ();
350+ var updatedRepositories = new RepositoriesMetadata (repositoriesMetadata );
351+ return currentState .copyAndUpdateProject (project .id (), b -> b .putCustom (RepositoriesMetadata .TYPE , updatedRepositories ));
354352 }
355353 }
356354
@@ -445,16 +443,18 @@ public static void updateRepositoryUuidInMetadata(
445443 new ClusterStateUpdateTask () {
446444 @ Override
447445 public ClusterState execute (ClusterState currentState ) {
448- final RepositoriesMetadata currentReposMetadata = RepositoriesMetadata .get (currentState );
446+ final var project = currentState .metadata ().getProject ();
447+ final RepositoriesMetadata currentReposMetadata = RepositoriesMetadata .get (project );
449448
450449 final RepositoryMetadata repositoryMetadata = currentReposMetadata .repository (repositoryName );
451450 if (repositoryMetadata == null || repositoryMetadata .uuid ().equals (repositoryUuid )) {
452451 return currentState ;
453452 } else {
454453 final RepositoriesMetadata newReposMetadata = currentReposMetadata .withUuid (repositoryName , repositoryUuid );
455- final Metadata .Builder metadata = Metadata .builder (currentState .metadata ())
456- .putDefaultProjectCustom (RepositoriesMetadata .TYPE , newReposMetadata );
457- return ClusterState .builder (currentState ).metadata (metadata ).build ();
454+ return currentState .copyAndUpdateProject (
455+ project .id (),
456+ builder -> builder .putCustom (RepositoriesMetadata .TYPE , newReposMetadata )
457+ );
458458 }
459459 }
460460
@@ -519,8 +519,8 @@ public UnregisterRepositoryTask(TimeValue dummyTimeout, String name) {
519519
520520 @ Override
521521 public ClusterState execute (ClusterState currentState ) {
522- Metadata . Builder mdBuilder = Metadata . builder ( currentState .metadata ());
523- RepositoriesMetadata repositories = RepositoriesMetadata .get (currentState );
522+ final var project = currentState .metadata (). getDefaultProject ( );
523+ RepositoriesMetadata repositories = RepositoriesMetadata .get (project );
524524 if (repositories .repositories ().size () > 0 ) {
525525 List <RepositoryMetadata > repositoriesMetadata = new ArrayList <>(repositories .repositories ().size ());
526526 boolean changed = false ;
@@ -535,9 +535,11 @@ public ClusterState execute(ClusterState currentState) {
535535 }
536536 }
537537 if (changed ) {
538- repositories = new RepositoriesMetadata (repositoriesMetadata );
539- mdBuilder .putDefaultProjectCustom (RepositoriesMetadata .TYPE , repositories );
540- return ClusterState .builder (currentState ).metadata (mdBuilder ).build ();
538+ final var updatedRepositories = new RepositoriesMetadata (repositoriesMetadata );
539+ return currentState .copyAndUpdateProject (
540+ project .id (),
541+ builder -> builder .putCustom (RepositoriesMetadata .TYPE , updatedRepositories )
542+ );
541543 }
542544 }
543545 if (Regex .isMatchAllPattern (request .name ())) { // we use a wildcard so we don't barf if it's not present.
0 commit comments