4545import org .elasticsearch .xpack .ccr .CcrSettings ;
4646
4747import java .io .IOException ;
48- import java .util .HashSet ;
4948import java .util .List ;
5049import java .util .Map ;
5150
@@ -247,28 +246,31 @@ protected Boolean newResponse(boolean acknowledged) {
247246
248247 @ Override
249248 public ClusterState execute (ClusterState currentState ) throws Exception {
250- IndexMetaData currentIndex = currentState .metaData ().index (request .getFollowRequest ().getFollowIndex ());
249+ String followIndex = request .getFollowRequest ().getFollowIndex ();
250+ IndexMetaData currentIndex = currentState .metaData ().index (followIndex );
251251 if (currentIndex != null ) {
252252 throw new ResourceAlreadyExistsException (currentIndex .getIndex ());
253253 }
254254
255255 MetaData .Builder mdBuilder = MetaData .builder (currentState .metaData ());
256- IndexMetaData .Builder imdBuilder = IndexMetaData .builder (request . getFollowRequest (). getFollowIndex () );
256+ IndexMetaData .Builder imdBuilder = IndexMetaData .builder (followIndex );
257257
258258 // Copy all settings, but overwrite a few settings.
259259 Settings .Builder settingsBuilder = Settings .builder ();
260260 settingsBuilder .put (leaderIndexMetaData .getSettings ());
261261 // Overwriting UUID here, because otherwise we can't follow indices in the same cluster
262262 settingsBuilder .put (IndexMetaData .SETTING_INDEX_UUID , UUIDs .randomBase64UUID ());
263- settingsBuilder .put (IndexMetaData .SETTING_INDEX_PROVIDED_NAME , request . getFollowRequest (). getFollowIndex () );
263+ settingsBuilder .put (IndexMetaData .SETTING_INDEX_PROVIDED_NAME , followIndex );
264264 settingsBuilder .put (CcrSettings .CCR_FOLLOWING_INDEX_SETTING .getKey (), true );
265265 imdBuilder .settings (settingsBuilder );
266266
267267 // Copy mappings from leader IMD to follow IMD
268268 for (ObjectObjectCursor <String , MappingMetaData > cursor : leaderIndexMetaData .getMappings ()) {
269269 imdBuilder .putMapping (cursor .value );
270270 }
271- mdBuilder .put (imdBuilder .build (), false );
271+ imdBuilder .setRoutingNumShards (leaderIndexMetaData .getRoutingNumShards ());
272+ IndexMetaData followIMD = imdBuilder .build ();
273+ mdBuilder .put (followIMD , false );
272274
273275 ClusterState .Builder builder = ClusterState .builder (currentState );
274276 builder .metaData (mdBuilder .build ());
@@ -279,7 +281,10 @@ public ClusterState execute(ClusterState currentState) throws Exception {
279281 updatedState = allocationService .reroute (
280282 ClusterState .builder (updatedState ).routingTable (routingTableBuilder .build ()).build (),
281283 "follow index [" + request .getFollowRequest ().getFollowIndex () + "] created" );
282-
284+
285+ logger .info ("[{}] creating index, cause [ccr_create_and_follow], shards [{}]/[{}]" ,
286+ followIndex , followIMD .getNumberOfShards (), followIMD .getNumberOfReplicas ());
287+
283288 return updatedState ;
284289 }
285290 });
0 commit comments