Package akka.cluster

Class JoinConfigCompatChecker

    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      abstract ConfigValidation check​(com.typesafe.config.Config toCheck, com.typesafe.config.Config actualConfig)
      Runs the Config check.
      static ConfigValidation exists​(scala.collection.immutable.Seq<java.lang.String> requiredKeys, com.typesafe.config.Config toCheck)
      Checks that all requiredKeys are available in toCheck Config.
      static com.typesafe.config.Config filterWithKeys​(scala.collection.immutable.Seq<java.lang.String> requiredKeys, com.typesafe.config.Config config)
      INTERNAL API Builds a new Config object containing only the required entries defined by requiredKeys
      static ConfigValidation fullMatch​(scala.collection.immutable.Seq<java.lang.String> requiredKeys, com.typesafe.config.Config toCheck, com.typesafe.config.Config actualConfig)
      Checks that all requiredKeys are available in toCheck Config and its values match exactly the values in currentConfig.
      static JoinConfigCompatChecker load​(ExtendedActorSystem system, ClusterSettings clusterSettings)
      INTERNAL API
      static scala.collection.immutable.Seq<java.lang.String> removeSensitiveKeys​(com.typesafe.config.Config config, ClusterSettings clusterSettings)
      INTERNAL API Builds a Seq of keys using the passed Config not including any sensitive keys, as defined in 'akka.cluster.configuration-compatibility-check.sensitive-config-paths'.
      static scala.collection.immutable.Seq<java.lang.String> removeSensitiveKeys​(scala.collection.immutable.Seq<java.lang.String> requiredKeys, ClusterSettings clusterSettings)
      INTERNAL API Removes sensitive keys, as defined in 'akka.cluster.configuration-compatibility-check.sensitive-config-paths', from the passed requiredKeys Seq.
      abstract scala.collection.immutable.Seq<java.lang.String> requiredKeys()
      The configuration keys that are required for this checker
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • JoinConfigCompatChecker

        public JoinConfigCompatChecker()
    • Method Detail

      • exists

        public static ConfigValidation exists​(scala.collection.immutable.Seq<java.lang.String> requiredKeys,
                                              com.typesafe.config.Config toCheck)
        Checks that all requiredKeys are available in toCheck Config.

        Parameters:
        requiredKeys - - a Seq of required keys
        toCheck - - the Config instance to be checked
      • fullMatch

        public static ConfigValidation fullMatch​(scala.collection.immutable.Seq<java.lang.String> requiredKeys,
                                                 com.typesafe.config.Config toCheck,
                                                 com.typesafe.config.Config actualConfig)
        Checks that all requiredKeys are available in toCheck Config and its values match exactly the values in currentConfig.

        Parameters:
        requiredKeys - - a Seq of required keys
        toCheck - - the Config instance to be checked
        actualConfig - - the Config instance containing the expected values
      • filterWithKeys

        public static com.typesafe.config.Config filterWithKeys​(scala.collection.immutable.Seq<java.lang.String> requiredKeys,
                                                                com.typesafe.config.Config config)
        INTERNAL API Builds a new Config object containing only the required entries defined by requiredKeys

        This method is used from the joining side to prepare the Config instance that will be sent over the wire. We don't send the full config to avoid unnecessary data transfer, but also to avoid leaking any sensitive information that users may have added to their configuration.

      • removeSensitiveKeys

        public static scala.collection.immutable.Seq<java.lang.String> removeSensitiveKeys​(scala.collection.immutable.Seq<java.lang.String> requiredKeys,
                                                                                           ClusterSettings clusterSettings)
        INTERNAL API Removes sensitive keys, as defined in 'akka.cluster.configuration-compatibility-check.sensitive-config-paths', from the passed requiredKeys Seq.
      • removeSensitiveKeys

        public static scala.collection.immutable.Seq<java.lang.String> removeSensitiveKeys​(com.typesafe.config.Config config,
                                                                                           ClusterSettings clusterSettings)
        INTERNAL API Builds a Seq of keys using the passed Config not including any sensitive keys, as defined in 'akka.cluster.configuration-compatibility-check.sensitive-config-paths'.
      • requiredKeys

        public abstract scala.collection.immutable.Seq<java.lang.String> requiredKeys()
        The configuration keys that are required for this checker
      • check

        public abstract ConfigValidation check​(com.typesafe.config.Config toCheck,
                                               com.typesafe.config.Config actualConfig)
        Runs the Config check.

        Implementers are free to define what makes Config entry compatible or not. We do provide some pre-build checks tough: JoinConfigCompatChecker.exists and JoinConfigCompatChecker.fullMatch

        Parameters:
        toCheck - - the Config instance to be checked
        actualConfig - - the Config instance containing the actual values
        Returns:
        a ConfigValidation. Can be Valid or Invalid, the later must contain a descriptive list of error messages.