20
20
import org .opensearch .core .xcontent .ToXContentFragment ;
21
21
import org .opensearch .core .xcontent .XContentBuilder ;
22
22
import org .opensearch .core .xcontent .XContentParser ;
23
+ import org .opensearch .gateway .remote .ClusterMetadataManifest .Builder ;
23
24
24
25
import java .io .IOException ;
25
26
import java .util .ArrayList ;
@@ -243,7 +244,7 @@ private static void declareParser(ConstructingObjectParser<ClusterMetadataManife
243
244
parser .declareBoolean (ConstructingObjectParser .constructorArg (), COMMITTED_FIELD );
244
245
parser .declareObjectArray (
245
246
ConstructingObjectParser .constructorArg (),
246
- (p , c ) -> UploadedIndexMetadata .fromXContent (p ),
247
+ (p , c ) -> UploadedIndexMetadata .fromXContent (p , codec_version ),
247
248
INDICES_FIELD
248
249
);
249
250
parser .declareString (ConstructingObjectParser .constructorArg (), PREVIOUS_CLUSTER_UUID );
@@ -277,7 +278,7 @@ private static void declareParser(ConstructingObjectParser<ClusterMetadataManife
277
278
parser .declareLong (ConstructingObjectParser .constructorArg (), ROUTING_TABLE_VERSION_FIELD );
278
279
parser .declareObjectArray (
279
280
ConstructingObjectParser .constructorArg (),
280
- (p , c ) -> UploadedIndexMetadata .fromXContent (p ),
281
+ (p , c ) -> UploadedIndexMetadata .fromXContent (p , codec_version ),
281
282
INDICES_ROUTING_FIELD
282
283
);
283
284
parser .declareNamedObject (
@@ -1112,16 +1113,30 @@ private static String componentPrefix(Object[] fields) {
1112
1113
return (String ) fields [3 ];
1113
1114
}
1114
1115
1115
- private static final ConstructingObjectParser <UploadedIndexMetadata , Void > PARSER = new ConstructingObjectParser <>(
1116
+ private static final ConstructingObjectParser <UploadedIndexMetadata , Void > PARSER_V0 = new ConstructingObjectParser <>(
1117
+ "uploaded_index_metadata" ,
1118
+ fields -> new UploadedIndexMetadata (indexName (fields ), indexUUID (fields ), uploadedFilename (fields ))
1119
+ );
1120
+
1121
+ private static final ConstructingObjectParser <UploadedIndexMetadata , Void > PARSER_V2 = new ConstructingObjectParser <>(
1116
1122
"uploaded_index_metadata" ,
1117
1123
fields -> new UploadedIndexMetadata (indexName (fields ), indexUUID (fields ), uploadedFilename (fields ), componentPrefix (fields ))
1118
1124
);
1119
1125
1126
+ private static final ConstructingObjectParser <UploadedIndexMetadata , Void > CURRENT_PARSER = PARSER_V2 ;
1127
+
1120
1128
static {
1121
- PARSER .declareString (ConstructingObjectParser .constructorArg (), INDEX_NAME_FIELD );
1122
- PARSER .declareString (ConstructingObjectParser .constructorArg (), INDEX_UUID_FIELD );
1123
- PARSER .declareString (ConstructingObjectParser .constructorArg (), UPLOADED_FILENAME_FIELD );
1124
- PARSER .declareString (ConstructingObjectParser .constructorArg (), COMPONENT_PREFIX_FIELD );
1129
+ declareParser (PARSER_V0 , CODEC_V0 );
1130
+ declareParser (PARSER_V2 , CODEC_V2 );
1131
+ }
1132
+
1133
+ private static void declareParser (ConstructingObjectParser <UploadedIndexMetadata , Void > parser , long codec_version ) {
1134
+ parser .declareString (ConstructingObjectParser .constructorArg (), INDEX_NAME_FIELD );
1135
+ parser .declareString (ConstructingObjectParser .constructorArg (), INDEX_UUID_FIELD );
1136
+ parser .declareString (ConstructingObjectParser .constructorArg (), UPLOADED_FILENAME_FIELD );
1137
+ if (codec_version >= CODEC_V2 ) {
1138
+ parser .declareString (ConstructingObjectParser .constructorArg (), COMPONENT_PREFIX_FIELD );
1139
+ }
1125
1140
}
1126
1141
1127
1142
static final String COMPONENT_PREFIX = "index--" ;
@@ -1130,15 +1145,32 @@ private static String componentPrefix(Object[] fields) {
1130
1145
private final String indexUUID ;
1131
1146
private final String uploadedFilename ;
1132
1147
1148
+ private long codecVersion = CODEC_V2 ;
1149
+
1133
1150
public UploadedIndexMetadata (String indexName , String indexUUID , String uploadedFileName ) {
1134
- this (indexName , indexUUID , uploadedFileName , COMPONENT_PREFIX );
1151
+ this (indexName , indexUUID , uploadedFileName , CODEC_V2 );
1152
+ }
1153
+
1154
+ public UploadedIndexMetadata (String indexName , String indexUUID , String uploadedFileName , long codecVersion ) {
1155
+ this (indexName , indexUUID , uploadedFileName , COMPONENT_PREFIX , codecVersion );
1135
1156
}
1136
1157
1137
1158
public UploadedIndexMetadata (String indexName , String indexUUID , String uploadedFileName , String componentPrefix ) {
1159
+ this (indexName , indexUUID , uploadedFileName , componentPrefix , CODEC_V2 );
1160
+ }
1161
+
1162
+ public UploadedIndexMetadata (
1163
+ String indexName ,
1164
+ String indexUUID ,
1165
+ String uploadedFileName ,
1166
+ String componentPrefix ,
1167
+ long codecVersion
1168
+ ) {
1138
1169
this .componentPrefix = componentPrefix ;
1139
1170
this .indexName = indexName ;
1140
1171
this .indexUUID = indexUUID ;
1141
1172
this .uploadedFilename = uploadedFileName ;
1173
+ this .codecVersion = codecVersion ;
1142
1174
}
1143
1175
1144
1176
public UploadedIndexMetadata (StreamInput in ) throws IOException {
@@ -1175,10 +1207,13 @@ public String getComponentPrefix() {
1175
1207
1176
1208
@ Override
1177
1209
public XContentBuilder toXContent (XContentBuilder builder , Params params ) throws IOException {
1178
- return builder .field (INDEX_NAME_FIELD .getPreferredName (), getIndexName ())
1210
+ builder .field (INDEX_NAME_FIELD .getPreferredName (), getIndexName ())
1179
1211
.field (INDEX_UUID_FIELD .getPreferredName (), getIndexUUID ())
1180
- .field (UPLOADED_FILENAME_FIELD .getPreferredName (), getUploadedFilePath ())
1181
- .field (COMPONENT_PREFIX_FIELD .getPreferredName (), getComponentPrefix ());
1212
+ .field (UPLOADED_FILENAME_FIELD .getPreferredName (), getUploadedFilePath ());
1213
+ if (codecVersion >= CODEC_V2 ) {
1214
+ builder .field (COMPONENT_PREFIX_FIELD .getPreferredName (), getComponentPrefix ());
1215
+ }
1216
+ return builder ;
1182
1217
}
1183
1218
1184
1219
@ Override
@@ -1214,9 +1249,13 @@ public String toString() {
1214
1249
return Strings .toString (MediaTypeRegistry .JSON , this );
1215
1250
}
1216
1251
1217
- public static UploadedIndexMetadata fromXContent (XContentParser parser ) throws IOException {
1218
- return PARSER .parse (parser , null );
1252
+ public static UploadedIndexMetadata fromXContent (XContentParser parser , long codecVersion ) throws IOException {
1253
+ if (codecVersion >= CODEC_V2 ) {
1254
+ return CURRENT_PARSER .parse (parser , null );
1255
+ }
1256
+ return PARSER_V0 .parse (parser , null );
1219
1257
}
1258
+
1220
1259
}
1221
1260
1222
1261
/**
0 commit comments