@@ -350,6 +350,28 @@ public boolean hasMixedSystemIndexVersions() {
350350            .anyMatch (e  -> e .systemIndexMappingsVersion ().equals (minVersions .systemIndexMappingsVersion ()) == false );
351351    }
352352
353+     /** 
354+      * @return the minimum {@link TransportVersion} that will be used for all future intra-cluster node-to-node communications. This value 
355+      *         only ever increases, so if {@code v.onOrAfter(cs.getMinTransportVersion())} is true once then it will remain true in the 
356+      *         future. 
357+      * <p> 
358+      * There are some subtle exceptions: 
359+      * <ul> 
360+      * <li>The "only ever increases" property is handled by the master node using the in-memory (ephemeral) part of the 
361+      *     {@link ClusterState} only, so in theory a full restart of a mixed-version cluster may lose that state and allow some nodes to see 
362+      *     this value decrease. For this to happen in practice requires some fairly unlucky timing during the initial master election. We 
363+      *     tell users not to do this: if something breaks during a rolling upgrade then they should upgrade all remaining nodes to continue. 
364+      *     But we do not enforce it. 
365+      * <li>The "used for all node-to-node communications" is false in a disordered upgrade (an upgrade to a semantically-newer but 
366+      *     chronologically-older version) because for each connection between such nodes we will use {@link 
367+      *     TransportVersion#bestKnownVersion} to pick a transport version which is known by both endpoints. We tell users not to do 
368+      *     disordered upgrades too, but do not enforce it. 
369+      * </ul> 
370+      * <p> 
371+      * Note also that node-to-node communications which are not <i>intra-cluster</i> (i.e. they are not between nodes in the same cluster) 
372+      * may sometimes use an earlier {@link TransportVersion} than this value. This includes remote-cluster communication, and communication 
373+      * with nodes that are just starting up or otherwise are attempting to join this cluster. 
374+      */ 
353375    public  TransportVersion  getMinTransportVersion () {
354376        return  this .minVersions .transportVersion ();
355377    }
0 commit comments