Class DiscoveryUpgradeService

  • public class DiscoveryUpgradeService
    extends java.lang.Object
    Deals with rolling upgrades of the cluster coordination layer. In mixed clusters we prefer to elect the older nodes, but when the last old node shuts down then as long as there are enough new nodes we can assume that they form the whole cluster and define them as the initial configuration.
    • Field Detail


        public static final Setting<TimeValue> BWC_PING_TIMEOUT_SETTING

        public static final Setting<java.lang.Boolean> ENABLE_UNSAFE_BOOTSTRAPPING_ON_UPGRADE_SETTING
    • Method Detail

      • activate

        public void activate​(java.util.Optional<DiscoveryNode> lastKnownLeader,
                             ClusterState lastAcceptedClusterState)
      • deactivate

        public void deactivate()
      • createDiscoveryNodeWithImpossiblyHighId

        public static DiscoveryNode createDiscoveryNodeWithImpossiblyHighId​(DiscoveryNode node)
        Pre-7.0 nodes select the best master by comparing their IDs (as strings) and selecting the lowest one amongst those nodes with the best cluster state version. We want 7.0+ nodes to participate in these elections in a mixed cluster but never to win one, so we lie and claim to have an impossible ID that compares above all genuine IDs.