@@ -153,6 +153,7 @@ public class IndexMetadata implements Diffable<IndexMetadata>, ToXContentFragmen
153153 public static final String EVENT_INGESTED_FIELD_NAME = "event.ingested" ;
154154
155155 private static final TransportVersion INDEX_RESHARDING_METADATA = TransportVersion .fromName ("index_resharding_metadata" );
156+ private static final TransportVersion INDEX_CREATED_TRANSPORT_VERSION = TransportVersion .fromName ("index_created_transport_version" );
156157
157158 @ Nullable
158159 public String getDownsamplingInterval () {
@@ -583,6 +584,7 @@ public Iterator<Setting<?>> settings() {
583584 public static final List <String > PARTIALLY_MOUNTED_INDEX_TIER_PREFERENCE = List .of (DataTier .DATA_FROZEN );
584585
585586 static final String KEY_VERSION = "version" ;
587+ static final String KEY_TRANSPORT_VERSION = "transport_version" ;
586588 static final String KEY_MAPPING_VERSION = "mapping_version" ;
587589 static final String KEY_SETTINGS_VERSION = "settings_version" ;
588590 static final String KEY_ALIASES_VERSION = "aliases_version" ;
@@ -623,6 +625,7 @@ public Iterator<Setting<?>> settings() {
623625
624626 private final Index index ;
625627 private final long version ;
628+ private final TransportVersion transportVersion ;
626629
627630 private final long mappingVersion ;
628631
@@ -708,6 +711,7 @@ public Iterator<Setting<?>> settings() {
708711 private IndexMetadata (
709712 final Index index ,
710713 final long version ,
714+ final TransportVersion transportVersion ,
711715 final long mappingVersion ,
712716 final long settingsVersion ,
713717 final long aliasesVersion ,
@@ -758,6 +762,7 @@ private IndexMetadata(
758762 ) {
759763 this .index = index ;
760764 this .version = version ;
765+ this .transportVersion = transportVersion ;
761766 assert mappingVersion >= 0 : mappingVersion ;
762767 this .mappingVersion = mappingVersion ;
763768 this .mappingsUpdatedVersion = mappingsUpdatedVersion ;
@@ -824,6 +829,7 @@ IndexMetadata withMappingMetadata(MappingMetadata mapping) {
824829 return new IndexMetadata (
825830 this .index ,
826831 this .version ,
832+ this .transportVersion ,
827833 this .mappingVersion ,
828834 this .settingsVersion ,
829835 this .aliasesVersion ,
@@ -887,6 +893,7 @@ public IndexMetadata withInSyncAllocationIds(int shardId, Set<String> inSyncSet)
887893 return new IndexMetadata (
888894 this .index ,
889895 this .version ,
896+ this .transportVersion ,
890897 this .mappingVersion ,
891898 this .settingsVersion ,
892899 this .aliasesVersion ,
@@ -958,6 +965,7 @@ public IndexMetadata withSetPrimaryTerm(int shardId, long primaryTerm) {
958965 return new IndexMetadata (
959966 this .index ,
960967 this .version ,
968+ this .transportVersion ,
961969 this .mappingVersion ,
962970 this .settingsVersion ,
963971 this .aliasesVersion ,
@@ -1020,6 +1028,7 @@ public IndexMetadata withTimestampRanges(IndexLongFieldRange timestampRange, Ind
10201028 return new IndexMetadata (
10211029 this .index ,
10221030 this .version ,
1031+ this .transportVersion ,
10231032 this .mappingVersion ,
10241033 this .settingsVersion ,
10251034 this .aliasesVersion ,
@@ -1077,6 +1086,7 @@ public IndexMetadata withIncrementedVersion() {
10771086 return new IndexMetadata (
10781087 this .index ,
10791088 this .version + 1 ,
1089+ this .transportVersion ,
10801090 this .mappingVersion ,
10811091 this .settingsVersion ,
10821092 this .aliasesVersion ,
@@ -1139,6 +1149,10 @@ public long getVersion() {
11391149 return this .version ;
11401150 }
11411151
1152+ public TransportVersion getTransportVersion () {
1153+ return transportVersion ;
1154+ }
1155+
11421156 public long getMappingVersion () {
11431157 return mappingVersion ;
11441158 }
@@ -1671,6 +1685,7 @@ private static class IndexMetadataDiff implements Diff<IndexMetadata> {
16711685 private final String index ;
16721686 private final int routingNumShards ;
16731687 private final long version ;
1688+ private final TransportVersion transportVersion ;
16741689 private final long mappingVersion ;
16751690 private final long settingsVersion ;
16761691 private final long aliasesVersion ;
@@ -1704,6 +1719,7 @@ private static class IndexMetadataDiff implements Diff<IndexMetadata> {
17041719 IndexMetadataDiff (IndexMetadata before , IndexMetadata after ) {
17051720 index = after .index .getName ();
17061721 version = after .version ;
1722+ transportVersion = after .transportVersion ;
17071723 mappingVersion = after .mappingVersion ;
17081724 settingsVersion = after .settingsVersion ;
17091725 aliasesVersion = after .aliasesVersion ;
@@ -1757,6 +1773,9 @@ private static class IndexMetadataDiff implements Diff<IndexMetadata> {
17571773 index = in .readString ();
17581774 routingNumShards = in .readInt ();
17591775 version = in .readLong ();
1776+ transportVersion = in .getTransportVersion ().supports (INDEX_CREATED_TRANSPORT_VERSION )
1777+ ? TransportVersion .readVersion (in )
1778+ : TransportVersion .fromId (0 );
17601779 mappingVersion = in .readVLong ();
17611780 settingsVersion = in .readVLong ();
17621781 aliasesVersion = in .readVLong ();
@@ -1824,6 +1843,9 @@ public void writeTo(StreamOutput out) throws IOException {
18241843 out .writeString (index );
18251844 out .writeInt (routingNumShards );
18261845 out .writeLong (version );
1846+ if (out .getTransportVersion ().supports (INDEX_CREATED_TRANSPORT_VERSION )) {
1847+ TransportVersion .writeVersion (transportVersion , out );
1848+ }
18271849 out .writeVLong (mappingVersion );
18281850 out .writeVLong (settingsVersion );
18291851 out .writeVLong (aliasesVersion );
@@ -1864,6 +1886,7 @@ public void writeTo(StreamOutput out) throws IOException {
18641886 public IndexMetadata apply (IndexMetadata part ) {
18651887 Builder builder = builder (index );
18661888 builder .version (version );
1889+ builder .transportVersion (transportVersion );
18671890 builder .mappingVersion (mappingVersion );
18681891 builder .settingsVersion (settingsVersion );
18691892 builder .aliasesVersion (aliasesVersion );
@@ -1907,6 +1930,11 @@ public static IndexMetadata readFrom(StreamInput in) throws IOException {
19071930 public static IndexMetadata readFrom (StreamInput in , @ Nullable Function <String , MappingMetadata > mappingLookup ) throws IOException {
19081931 Builder builder = new Builder (in .readString ());
19091932 builder .version (in .readLong ());
1933+ builder .transportVersion (
1934+ in .getTransportVersion ().supports (INDEX_CREATED_TRANSPORT_VERSION )
1935+ ? TransportVersion .readVersion (in )
1936+ : TransportVersion .fromId (0 )
1937+ );
19101938 builder .mappingVersion (in .readVLong ());
19111939 builder .settingsVersion (in .readVLong ());
19121940 builder .aliasesVersion (in .readVLong ());
@@ -1974,6 +2002,9 @@ public static IndexMetadata readFrom(StreamInput in, @Nullable Function<String,
19742002 public void writeTo (StreamOutput out , boolean mappingsAsHash ) throws IOException {
19752003 out .writeString (index .getName ()); // uuid will come as part of settings
19762004 out .writeLong (version );
2005+ if (out .getTransportVersion ().supports (INDEX_CREATED_TRANSPORT_VERSION )) {
2006+ TransportVersion .writeVersion (transportVersion , out );
2007+ }
19772008 out .writeVLong (mappingVersion );
19782009 out .writeVLong (settingsVersion );
19792010 out .writeVLong (aliasesVersion );
@@ -2049,6 +2080,7 @@ public static class Builder {
20492080 private String index ;
20502081 private State state = State .OPEN ;
20512082 private long version = 1 ;
2083+ private TransportVersion transportVersion = TransportVersion .fromId (0 );
20522084 private long mappingVersion = 1 ;
20532085 private long settingsVersion = 1 ;
20542086 private long aliasesVersion = 1 ;
@@ -2085,6 +2117,7 @@ public Builder(IndexMetadata indexMetadata) {
20852117 this .index = indexMetadata .getIndex ().getName ();
20862118 this .state = indexMetadata .state ;
20872119 this .version = indexMetadata .version ;
2120+ this .transportVersion = indexMetadata .transportVersion ;
20882121 this .mappingVersion = indexMetadata .mappingVersion ;
20892122 this .settingsVersion = indexMetadata .settingsVersion ;
20902123 this .aliasesVersion = indexMetadata .aliasesVersion ;
@@ -2293,6 +2326,15 @@ public Builder version(long version) {
22932326 return this ;
22942327 }
22952328
2329+ public TransportVersion transportVersion () {
2330+ return this .transportVersion ;
2331+ }
2332+
2333+ public Builder transportVersion (TransportVersion transportVersion ) {
2334+ this .transportVersion = transportVersion ;
2335+ return this ;
2336+ }
2337+
22962338 public long mappingVersion () {
22972339 return mappingVersion ;
22982340 }
@@ -2558,6 +2600,7 @@ IndexMetadata build(boolean repair) {
25582600 return new IndexMetadata (
25592601 new Index (index , uuid ),
25602602 version ,
2603+ transportVersion ,
25612604 mappingVersion ,
25622605 settingsVersion ,
25632606 aliasesVersion ,
@@ -2617,6 +2660,7 @@ public static void toXContent(IndexMetadata indexMetadata, XContentBuilder build
26172660 builder .startObject (indexMetadata .getIndex ().getName ());
26182661
26192662 builder .field (KEY_VERSION , indexMetadata .getVersion ());
2663+ builder .field (KEY_TRANSPORT_VERSION , indexMetadata .getTransportVersion ().toString ());
26202664 builder .field (KEY_MAPPING_VERSION , indexMetadata .getMappingVersion ());
26212665 builder .field (KEY_SETTINGS_VERSION , indexMetadata .getSettingsVersion ());
26222666 builder .field (KEY_ALIASES_VERSION , indexMetadata .getAliasesVersion ());
@@ -2874,6 +2918,7 @@ public static IndexMetadata fromXContent(XContentParser parser, Map<String, Mapp
28742918 switch (currentFieldName ) {
28752919 case KEY_STATE -> builder .state (State .fromString (parser .text ()));
28762920 case KEY_VERSION -> builder .version (parser .longValue ());
2921+ case KEY_TRANSPORT_VERSION -> builder .transportVersion (TransportVersion .fromString (parser .text ()));
28772922 case KEY_MAPPING_VERSION -> {
28782923 mappingVersion = true ;
28792924 builder .mappingVersion (parser .longValue ());
0 commit comments