Interface ClusterState.FeatureAware

    • Method Detail

      • getRequiredFeature

        default java.util.Optional<java.lang.String> getRequiredFeature()
        An optional feature that is required for the client to have.
        Returns:
        an empty optional if no feature is required otherwise a string representing the required feature
      • shouldSerialize

        static <T extends VersionedNamedWriteable & ClusterState.FeatureAware> boolean shouldSerialize​(StreamOutput out,
                                                                                                       T custom)
        Tests whether or not the custom should be serialized. The criteria are:
        • the output stream must be at least the minimum supported version of the custom
        • the output stream must have the feature required by the custom (if any) or not be a transport client

        That is, we only serialize customs to clients than can understand the custom based on the version of the client and the features that the client has. For transport clients we can be lenient in requiring a feature in which case we do not send the custom but for connected nodes we always require that the node has the required feature.

        Type Parameters:
        T - the type of the custom
        Parameters:
        out - the output stream
        custom - the custom to serialize
        Returns:
        true if the custom should be serialized and false otherwise