@@ -950,6 +950,7 @@ public synchronized void verifyIndexMetadata(IndexMetadata metadata, IndexMetada
950
950
951
951
@ Override
952
952
public void createShard (
953
+ final ProjectId projectId ,
953
954
final ShardRouting shardRouting ,
954
955
final PeerRecoveryTargetService recoveryTargetService ,
955
956
final PeerRecoveryTargetService .RecoveryListener recoveryListener ,
@@ -968,26 +969,29 @@ public void createShard(
968
969
RecoveryState recoveryState = indexService .createRecoveryState (shardRouting , targetNode , sourceNode );
969
970
IndexShard indexShard = indexService .createShard (shardRouting , globalCheckpointSyncer , retentionLeaseSyncer );
970
971
indexShard .addShardFailureCallback (onShardFailure );
971
- indexShard .startRecovery (
972
- recoveryState ,
973
- recoveryTargetService ,
974
- postRecoveryMerger .maybeMergeAfterRecovery (indexService .getMetadata (), shardRouting , recoveryListener ),
975
- repositoriesService ,
976
- (mapping , listener ) -> {
977
- assert recoveryState .getRecoverySource ().getType () == RecoverySource .Type .LOCAL_SHARDS
978
- : "mapping update consumer only required by local shards recovery" ;
979
- AcknowledgedRequest <PutMappingRequest > putMappingRequestAcknowledgedRequest = new PutMappingRequest ()
980
- // concrete index - no name clash, it uses uuid
981
- .setConcreteIndex (shardRouting .index ())
982
- .source (mapping .source ().string (), XContentType .JSON );
983
- client .execute (
984
- TransportAutoPutMappingAction .TYPE ,
985
- putMappingRequestAcknowledgedRequest .ackTimeout (TimeValue .MAX_VALUE ).masterNodeTimeout (TimeValue .MAX_VALUE ),
986
- new RefCountAwareThreadedActionListener <>(threadPool .generic (), listener .map (ignored -> null ))
987
- );
988
- },
989
- this ,
990
- clusterStateVersion
972
+ projectResolver .executeOnProject (
973
+ projectId ,
974
+ () -> indexShard .startRecovery (
975
+ recoveryState ,
976
+ recoveryTargetService ,
977
+ postRecoveryMerger .maybeMergeAfterRecovery (indexService .getMetadata (), shardRouting , recoveryListener ),
978
+ repositoriesService ,
979
+ (mapping , listener ) -> {
980
+ assert recoveryState .getRecoverySource ().getType () == RecoverySource .Type .LOCAL_SHARDS
981
+ : "mapping update consumer only required by local shards recovery" ;
982
+ AcknowledgedRequest <PutMappingRequest > putMappingRequestAcknowledgedRequest = new PutMappingRequest ()
983
+ // concrete index - no name clash, it uses uuid
984
+ .setConcreteIndex (shardRouting .index ())
985
+ .source (mapping .source ().string (), XContentType .JSON );
986
+ client .execute (
987
+ TransportAutoPutMappingAction .TYPE ,
988
+ putMappingRequestAcknowledgedRequest .ackTimeout (TimeValue .MAX_VALUE ).masterNodeTimeout (TimeValue .MAX_VALUE ),
989
+ new RefCountAwareThreadedActionListener <>(threadPool .generic (), listener .map (ignored -> null ))
990
+ );
991
+ },
992
+ this ,
993
+ clusterStateVersion
994
+ )
991
995
);
992
996
}
993
997
0 commit comments