@@ -156,6 +156,7 @@ public class IndexMetadata implements Diffable<IndexMetadata>, ToXContentFragmen
156156 public static final String EVENT_INGESTED_FIELD_NAME = "event.ingested" ;
157157
158158 private static final TransportVersion INDEX_RESHARDING_METADATA = TransportVersion .fromName ("index_resharding_metadata" );
159+ private static final TransportVersion INDEX_CREATED_TRANSPORT_VERSION = TransportVersion .fromName ("index_created_transport_version" );
159160
160161 @ Nullable
161162 public String getDownsamplingInterval () {
@@ -586,6 +587,7 @@ public Iterator<Setting<?>> settings() {
586587 public static final List <String > PARTIALLY_MOUNTED_INDEX_TIER_PREFERENCE = List .of (DataTier .DATA_FROZEN );
587588
588589 static final String KEY_VERSION = "version" ;
590+ static final String KEY_TRANSPORT_VERSION = "transport_version" ;
589591 static final String KEY_MAPPING_VERSION = "mapping_version" ;
590592 static final String KEY_SETTINGS_VERSION = "settings_version" ;
591593 static final String KEY_ALIASES_VERSION = "aliases_version" ;
@@ -626,6 +628,7 @@ public Iterator<Setting<?>> settings() {
626628
627629 private final Index index ;
628630 private final long version ;
631+ private final TransportVersion transportVersion ;
629632
630633 private final long mappingVersion ;
631634
@@ -713,6 +716,7 @@ public Iterator<Setting<?>> settings() {
713716 private IndexMetadata (
714717 final Index index ,
715718 final long version ,
719+ final TransportVersion transportVersion ,
716720 final long mappingVersion ,
717721 final long settingsVersion ,
718722 final long aliasesVersion ,
@@ -764,6 +768,7 @@ private IndexMetadata(
764768 ) {
765769 this .index = index ;
766770 this .version = version ;
771+ this .transportVersion = transportVersion ;
767772 assert mappingVersion >= 0 : mappingVersion ;
768773 this .mappingVersion = mappingVersion ;
769774 this .mappingsUpdatedVersion = mappingsUpdatedVersion ;
@@ -831,6 +836,7 @@ IndexMetadata withMappingMetadata(MappingMetadata mapping) {
831836 return new IndexMetadata (
832837 this .index ,
833838 this .version ,
839+ this .transportVersion ,
834840 this .mappingVersion ,
835841 this .settingsVersion ,
836842 this .aliasesVersion ,
@@ -895,6 +901,7 @@ public IndexMetadata withInSyncAllocationIds(int shardId, Set<String> inSyncSet)
895901 return new IndexMetadata (
896902 this .index ,
897903 this .version ,
904+ this .transportVersion ,
898905 this .mappingVersion ,
899906 this .settingsVersion ,
900907 this .aliasesVersion ,
@@ -967,6 +974,7 @@ public IndexMetadata withSetPrimaryTerm(int shardId, long primaryTerm) {
967974 return new IndexMetadata (
968975 this .index ,
969976 this .version ,
977+ this .transportVersion ,
970978 this .mappingVersion ,
971979 this .settingsVersion ,
972980 this .aliasesVersion ,
@@ -1030,6 +1038,7 @@ public IndexMetadata withTimestampRanges(IndexLongFieldRange timestampRange, Ind
10301038 return new IndexMetadata (
10311039 this .index ,
10321040 this .version ,
1041+ this .transportVersion ,
10331042 this .mappingVersion ,
10341043 this .settingsVersion ,
10351044 this .aliasesVersion ,
@@ -1088,6 +1097,7 @@ public IndexMetadata withIncrementedVersion() {
10881097 return new IndexMetadata (
10891098 this .index ,
10901099 this .version + 1 ,
1100+ this .transportVersion ,
10911101 this .mappingVersion ,
10921102 this .settingsVersion ,
10931103 this .aliasesVersion ,
@@ -1151,6 +1161,10 @@ public long getVersion() {
11511161 return this .version ;
11521162 }
11531163
1164+ public TransportVersion getTransportVersion () {
1165+ return transportVersion ;
1166+ }
1167+
11541168 public long getMappingVersion () {
11551169 return mappingVersion ;
11561170 }
@@ -1658,6 +1672,7 @@ private static class IndexMetadataDiff implements Diff<IndexMetadata> {
16581672 private final String index ;
16591673 private final int routingNumShards ;
16601674 private final long version ;
1675+ private final TransportVersion transportVersion ;
16611676 private final long mappingVersion ;
16621677 private final long settingsVersion ;
16631678 private final long aliasesVersion ;
@@ -1691,6 +1706,7 @@ private static class IndexMetadataDiff implements Diff<IndexMetadata> {
16911706 IndexMetadataDiff (IndexMetadata before , IndexMetadata after ) {
16921707 index = after .index .getName ();
16931708 version = after .version ;
1709+ transportVersion = after .transportVersion ;
16941710 mappingVersion = after .mappingVersion ;
16951711 settingsVersion = after .settingsVersion ;
16961712 aliasesVersion = after .aliasesVersion ;
@@ -1744,6 +1760,9 @@ private static class IndexMetadataDiff implements Diff<IndexMetadata> {
17441760 index = in .readString ();
17451761 routingNumShards = in .readInt ();
17461762 version = in .readLong ();
1763+ transportVersion = in .getTransportVersion ().supports (INDEX_CREATED_TRANSPORT_VERSION )
1764+ ? TransportVersion .readVersion (in )
1765+ : TransportVersion .fromId (0 );
17471766 mappingVersion = in .readVLong ();
17481767 settingsVersion = in .readVLong ();
17491768 aliasesVersion = in .readVLong ();
@@ -1811,6 +1830,9 @@ public void writeTo(StreamOutput out) throws IOException {
18111830 out .writeString (index );
18121831 out .writeInt (routingNumShards );
18131832 out .writeLong (version );
1833+ if (out .getTransportVersion ().supports (INDEX_CREATED_TRANSPORT_VERSION )) {
1834+ TransportVersion .writeVersion (transportVersion , out );
1835+ }
18141836 out .writeVLong (mappingVersion );
18151837 out .writeVLong (settingsVersion );
18161838 out .writeVLong (aliasesVersion );
@@ -1851,6 +1873,7 @@ public void writeTo(StreamOutput out) throws IOException {
18511873 public IndexMetadata apply (IndexMetadata part ) {
18521874 Builder builder = builder (index );
18531875 builder .version (version );
1876+ builder .transportVersion (transportVersion );
18541877 builder .mappingVersion (mappingVersion );
18551878 builder .settingsVersion (settingsVersion );
18561879 builder .aliasesVersion (aliasesVersion );
@@ -1894,6 +1917,11 @@ public static IndexMetadata readFrom(StreamInput in) throws IOException {
18941917 public static IndexMetadata readFrom (StreamInput in , @ Nullable Function <String , MappingMetadata > mappingLookup ) throws IOException {
18951918 Builder builder = new Builder (in .readString ());
18961919 builder .version (in .readLong ());
1920+ builder .transportVersion (
1921+ in .getTransportVersion ().supports (INDEX_CREATED_TRANSPORT_VERSION )
1922+ ? TransportVersion .readVersion (in )
1923+ : TransportVersion .fromId (0 )
1924+ );
18971925 builder .mappingVersion (in .readVLong ());
18981926 builder .settingsVersion (in .readVLong ());
18991927 builder .aliasesVersion (in .readVLong ());
@@ -1961,6 +1989,9 @@ public static IndexMetadata readFrom(StreamInput in, @Nullable Function<String,
19611989 public void writeTo (StreamOutput out , boolean mappingsAsHash ) throws IOException {
19621990 out .writeString (index .getName ()); // uuid will come as part of settings
19631991 out .writeLong (version );
1992+ if (out .getTransportVersion ().supports (INDEX_CREATED_TRANSPORT_VERSION )) {
1993+ TransportVersion .writeVersion (transportVersion , out );
1994+ }
19641995 out .writeVLong (mappingVersion );
19651996 out .writeVLong (settingsVersion );
19661997 out .writeVLong (aliasesVersion );
@@ -2036,6 +2067,7 @@ public static class Builder {
20362067 private String index ;
20372068 private State state = State .OPEN ;
20382069 private long version = 1 ;
2070+ private TransportVersion transportVersion = TransportVersion .fromId (0 );
20392071 private long mappingVersion = 1 ;
20402072 private long settingsVersion = 1 ;
20412073 private long aliasesVersion = 1 ;
@@ -2072,6 +2104,7 @@ public Builder(IndexMetadata indexMetadata) {
20722104 this .index = indexMetadata .getIndex ().getName ();
20732105 this .state = indexMetadata .state ;
20742106 this .version = indexMetadata .version ;
2107+ this .transportVersion = indexMetadata .transportVersion ;
20752108 this .mappingVersion = indexMetadata .mappingVersion ;
20762109 this .settingsVersion = indexMetadata .settingsVersion ;
20772110 this .aliasesVersion = indexMetadata .aliasesVersion ;
@@ -2280,6 +2313,15 @@ public Builder version(long version) {
22802313 return this ;
22812314 }
22822315
2316+ public TransportVersion transportVersion () {
2317+ return this .transportVersion ;
2318+ }
2319+
2320+ public Builder transportVersion (TransportVersion transportVersion ) {
2321+ this .transportVersion = transportVersion ;
2322+ return this ;
2323+ }
2324+
22832325 public long mappingVersion () {
22842326 return mappingVersion ;
22852327 }
@@ -2555,6 +2597,7 @@ IndexMetadata build(boolean repair) {
25552597 return new IndexMetadata (
25562598 new Index (index , uuid ),
25572599 version ,
2600+ transportVersion ,
25582601 mappingVersion ,
25592602 settingsVersion ,
25602603 aliasesVersion ,
@@ -2615,6 +2658,7 @@ public static void toXContent(IndexMetadata indexMetadata, XContentBuilder build
26152658 builder .startObject (indexMetadata .getIndex ().getName ());
26162659
26172660 builder .field (KEY_VERSION , indexMetadata .getVersion ());
2661+ builder .field (KEY_TRANSPORT_VERSION , indexMetadata .getTransportVersion ().toString ());
26182662 builder .field (KEY_MAPPING_VERSION , indexMetadata .getMappingVersion ());
26192663 builder .field (KEY_SETTINGS_VERSION , indexMetadata .getSettingsVersion ());
26202664 builder .field (KEY_ALIASES_VERSION , indexMetadata .getAliasesVersion ());
@@ -2872,6 +2916,7 @@ public static IndexMetadata fromXContent(XContentParser parser, Map<String, Mapp
28722916 switch (currentFieldName ) {
28732917 case KEY_STATE -> builder .state (State .fromString (parser .text ()));
28742918 case KEY_VERSION -> builder .version (parser .longValue ());
2919+ case KEY_TRANSPORT_VERSION -> builder .transportVersion (TransportVersion .fromString (parser .text ()));
28752920 case KEY_MAPPING_VERSION -> {
28762921 mappingVersion = true ;
28772922 builder .mappingVersion (parser .longValue ());
0 commit comments