2525import org .elasticsearch .cluster .metadata .IndexMetadata ;
2626import org .elasticsearch .cluster .metadata .Metadata ;
2727import org .elasticsearch .cluster .metadata .ProjectId ;
28+ import org .elasticsearch .cluster .metadata .ProjectMetadata ;
2829import org .elasticsearch .cluster .service .ClusterService ;
2930import org .elasticsearch .common .Strings ;
3031import org .elasticsearch .common .settings .IndexScopedSettings ;
@@ -207,6 +208,10 @@ private void createFollowerIndex(
207208 (delegatedListener , response ) -> afterRestoreStarted (clientWithHeaders , request , delegatedListener , response )
208209 );
209210
211+ @ FixForMultiProject (
212+ description = "CCR may not be in scope for multi-project though we haven't made the decision explicitly yet. See also ES-12139"
213+ )
214+ final ProjectId projectId = ProjectId .DEFAULT ;
210215 final BiConsumer <ClusterState , Metadata .Builder > updater ;
211216 if (remoteDataStream == null ) {
212217 // If the index we're following is not part of a data stream, start the
@@ -229,8 +234,9 @@ private void createFollowerIndex(
229234 // There was no specified name, use the original data stream name.
230235 localDataStreamName = remoteDataStream .getName ();
231236 }
232- final DataStream localDataStream = mdBuilder .dataStreamMetadata ().dataStreams ().get (localDataStreamName );
233- final Index followerIndex = mdBuilder .get (followerIndexName ).getIndex ();
237+ final ProjectMetadata .Builder projectBuilder = mdBuilder .getProject (projectId );
238+ final DataStream localDataStream = projectBuilder .dataStream (localDataStreamName );
239+ final Index followerIndex = projectBuilder .get (followerIndexName ).getIndex ();
234240 assert followerIndex != null : "expected followerIndex " + followerIndexName + " to exist in the state, but it did not" ;
235241
236242 final DataStream updatedDataStream = updateLocalDataStream (
@@ -239,13 +245,9 @@ private void createFollowerIndex(
239245 localDataStreamName ,
240246 remoteDataStream
241247 );
242- mdBuilder .put (updatedDataStream );
248+ projectBuilder .put (updatedDataStream );
243249 };
244250 }
245- @ FixForMultiProject (
246- description = "CCR may not be in scope for multi-project though we haven't made the decision explicitly yet. See also ES-12139"
247- )
248- final ProjectId projectId = ProjectId .DEFAULT ;
249251 threadPool .executor (ThreadPool .Names .SNAPSHOT_META )
250252 .execute (ActionRunnable .wrap (delegatelistener , l -> restoreService .restoreSnapshot (projectId , restoreRequest , l , updater )));
251253 }
0 commit comments