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 ());
@@ -544,6 +546,16 @@ private IndexMetadata buildAndValidateTemporaryIndexMetadata(
544
546
tmpImdBuilder .settings (indexSettings );
545
547
tmpImdBuilder .system (isSystem );
546
548
549
+ if (isRemoteStoreAttributePresent (settings )) {
550
+ String pathType ;
551
+ if (clusterService .getClusterSettings ().get (IndicesService .CLUSTER_REMOTE_STORE_PATH_PREFIX_OPTIMISED_SETTING )) {
552
+ pathType = RemoteStorePathType .HASHED_PREFIX .toString ();
553
+ } else {
554
+ pathType = RemoteStorePathType .FIXED .toString ();
555
+ }
556
+ tmpImdBuilder .putCustom (IndexMetadata .REMOTE_STORE_CUSTOM_KEY , Map .of (RemoteStorePathType .NAME , pathType ));
557
+ }
558
+
547
559
// Set up everything, now locally create the index to see that things are ok, and apply
548
560
IndexMetadata tempMetadata = tmpImdBuilder .build ();
549
561
validateActiveShardCount (request .waitForActiveShards (), tempMetadata );
@@ -1147,7 +1159,8 @@ static IndexMetadata buildIndexMetadata(
1147
1159
Settings indexSettings ,
1148
1160
int routingNumShards ,
1149
1161
@ Nullable IndexMetadata sourceMetadata ,
1150
- boolean isSystem
1162
+ boolean isSystem ,
1163
+ Map <String , DiffableStringMap > customData
1151
1164
) {
1152
1165
IndexMetadata .Builder indexMetadataBuilder = createIndexMetadataBuilder (indexName , sourceMetadata , indexSettings , routingNumShards );
1153
1166
indexMetadataBuilder .system (isSystem );
@@ -1168,6 +1181,10 @@ static IndexMetadata buildIndexMetadata(
1168
1181
indexMetadataBuilder .putAlias (aliases .get (i ));
1169
1182
}
1170
1183
1184
+ for (Map .Entry <String , DiffableStringMap > entry : customData .entrySet ()) {
1185
+ indexMetadataBuilder .putCustom (entry .getKey (), entry .getValue ());
1186
+ }
1187
+
1171
1188
indexMetadataBuilder .state (IndexMetadata .State .OPEN );
1172
1189
return indexMetadataBuilder .build ();
1173
1190
}
0 commit comments