88
88
import org .opensearch .index .mapper .MapperService ;
89
89
import org .opensearch .index .mapper .MapperService .MergeReason ;
90
90
import org .opensearch .index .query .QueryShardContext ;
91
+ import org .opensearch .index .remote .RemoteStorePathType ;
91
92
import org .opensearch .index .shard .IndexSettingProvider ;
92
93
import org .opensearch .index .translog .Translog ;
93
94
import org .opensearch .indices .IndexCreationException ;
@@ -498,7 +499,8 @@ private ClusterState applyCreateIndexWithTemporaryService(
498
499
temporaryIndexMeta .getSettings (),
499
500
temporaryIndexMeta .getRoutingNumShards (),
500
501
sourceMetadata ,
501
- temporaryIndexMeta .isSystem ()
502
+ temporaryIndexMeta .isSystem (),
503
+ temporaryIndexMeta .getCustomData ()
502
504
);
503
505
} catch (Exception e ) {
504
506
logger .info ("failed to build index metadata [{}]" , request .index ());
@@ -522,10 +524,11 @@ private ClusterState applyCreateIndexWithTemporaryService(
522
524
523
525
/**
524
526
* Given a state and index settings calculated after applying templates, validate metadata for
525
- * the new index, returning an {@link IndexMetadata} for the new index
527
+ * the new index, returning an {@link IndexMetadata} for the new index.
528
+ * <p>
529
+ * The access level of the method changed to default level for visibility to test.
526
530
*/
527
- private IndexMetadata buildAndValidateTemporaryIndexMetadata (
528
- final ClusterState currentState ,
531
+ IndexMetadata buildAndValidateTemporaryIndexMetadata (
529
532
final Settings aggregatedIndexSettings ,
530
533
final CreateIndexClusterStateUpdateRequest request ,
531
534
final int routingNumShards
@@ -544,6 +547,16 @@ private IndexMetadata buildAndValidateTemporaryIndexMetadata(
544
547
tmpImdBuilder .settings (indexSettings );
545
548
tmpImdBuilder .system (isSystem );
546
549
550
+ if (isRemoteStoreAttributePresent (settings )) {
551
+ String pathType ;
552
+ if (clusterService .getClusterSettings ().get (IndicesService .CLUSTER_REMOTE_STORE_PATH_PREFIX_OPTIMISED_SETTING )) {
553
+ pathType = RemoteStorePathType .HASHED_PREFIX .toString ();
554
+ } else {
555
+ pathType = RemoteStorePathType .FIXED .toString ();
556
+ }
557
+ tmpImdBuilder .putCustom (IndexMetadata .REMOTE_STORE_CUSTOM_KEY , Map .of (RemoteStorePathType .NAME , pathType ));
558
+ }
559
+
547
560
// Set up everything, now locally create the index to see that things are ok, and apply
548
561
IndexMetadata tempMetadata = tmpImdBuilder .build ();
549
562
validateActiveShardCount (request .waitForActiveShards (), tempMetadata );
@@ -582,7 +595,7 @@ private ClusterState applyCreateIndexRequestWithV1Templates(
582
595
clusterService .getClusterSettings ()
583
596
);
584
597
int routingNumShards = getIndexNumberOfRoutingShards (aggregatedIndexSettings , null );
585
- IndexMetadata tmpImd = buildAndValidateTemporaryIndexMetadata (currentState , aggregatedIndexSettings , request , routingNumShards );
598
+ IndexMetadata tmpImd = buildAndValidateTemporaryIndexMetadata (aggregatedIndexSettings , request , routingNumShards );
586
599
587
600
return applyCreateIndexWithTemporaryService (
588
601
currentState ,
@@ -647,7 +660,7 @@ private ClusterState applyCreateIndexRequestWithV2Template(
647
660
clusterService .getClusterSettings ()
648
661
);
649
662
int routingNumShards = getIndexNumberOfRoutingShards (aggregatedIndexSettings , null );
650
- IndexMetadata tmpImd = buildAndValidateTemporaryIndexMetadata (currentState , aggregatedIndexSettings , request , routingNumShards );
663
+ IndexMetadata tmpImd = buildAndValidateTemporaryIndexMetadata (aggregatedIndexSettings , request , routingNumShards );
651
664
652
665
return applyCreateIndexWithTemporaryService (
653
666
currentState ,
@@ -728,7 +741,7 @@ private ClusterState applyCreateIndexRequestWithExistingMetadata(
728
741
clusterService .getClusterSettings ()
729
742
);
730
743
final int routingNumShards = getIndexNumberOfRoutingShards (aggregatedIndexSettings , sourceMetadata );
731
- IndexMetadata tmpImd = buildAndValidateTemporaryIndexMetadata (currentState , aggregatedIndexSettings , request , routingNumShards );
744
+ IndexMetadata tmpImd = buildAndValidateTemporaryIndexMetadata (aggregatedIndexSettings , request , routingNumShards );
732
745
733
746
return applyCreateIndexWithTemporaryService (
734
747
currentState ,
@@ -1147,7 +1160,8 @@ static IndexMetadata buildIndexMetadata(
1147
1160
Settings indexSettings ,
1148
1161
int routingNumShards ,
1149
1162
@ Nullable IndexMetadata sourceMetadata ,
1150
- boolean isSystem
1163
+ boolean isSystem ,
1164
+ Map <String , DiffableStringMap > customData
1151
1165
) {
1152
1166
IndexMetadata .Builder indexMetadataBuilder = createIndexMetadataBuilder (indexName , sourceMetadata , indexSettings , routingNumShards );
1153
1167
indexMetadataBuilder .system (isSystem );
@@ -1168,6 +1182,10 @@ static IndexMetadata buildIndexMetadata(
1168
1182
indexMetadataBuilder .putAlias (aliases .get (i ));
1169
1183
}
1170
1184
1185
+ for (Map .Entry <String , DiffableStringMap > entry : customData .entrySet ()) {
1186
+ indexMetadataBuilder .putCustom (entry .getKey (), entry .getValue ());
1187
+ }
1188
+
1171
1189
indexMetadataBuilder .state (IndexMetadata .State .OPEN );
1172
1190
return indexMetadataBuilder .build ();
1173
1191
}
0 commit comments