Interface DiscoveryService


  • public interface DiscoveryService
    The DiscoveryService interface defines the basic entry point into the Discovery SPI implementation. If not overridden explicitly the Hazelcast internal DefaultDiscoveryService implementation is used. A DiscoveryService somehow finds available DiscoveryStrategys inside the classpath and manages their activation or deactivation status.

    This interface is used by system integrators, integrating Hazelcast into their own frameworks or environments, are free to extend or exchange the default implementation based on their needs and requirements.

    Only enabled providers are expected to discover nodes but, depending on the DiscoveryService implementation, multiple DiscoveryStrategys might be enabled at the same time (e.g. TCP-IP Joiner with well known addresses and Cloud discovery).

    Since:
    3.6
    • Method Detail

      • start

        void start()
        The start method is called on system startup to implement simple lifecycle management. This method is expected to call DiscoveryStrategy.start() on all discovered and start up strategies.
      • discoverNodes

        java.lang.Iterable<DiscoveryNode> discoverNodes()
        Returns a discovered and filtered, if a NodeFilter is setup, set of discovered nodes to connect to.
        Returns:
        a set of discovered and filtered nodes
      • destroy

        void destroy()
        The start method is called on system startup to implement simple lifecycle management. This method is expected to call DiscoveryStrategy.destroy() on all discovered and destroy strategies before the service itself will be destroyed.
      • discoverLocalMetadata

        java.util.Map<java.lang.String,​java.lang.String> discoverLocalMetadata()
        Returns a map with discovered metadata provided by the runtime environment. Those information may include, but are not limited, to location information like datacenter or additional tags to be used for custom purpose.

        Information discovered from this method are copied into the Members attributes. Existing attributes will be overridden.

        The default implementation provides an empty map with no further metadata configured. Returning null is not permitted and will most probably result in an NullPointerException inside the cluster system.

        Returns:
        a map of discovered metadata as provided by the runtime environment
        Since:
        3.7
      • markEndpointAsUnhealthy

        @PrivateApi
        default void markEndpointAsUnhealthy​(Address address)
        Marks the passed Address as unhealthy, which prevents it from being offered as a viable endpoint in some DiscoveryStrategy implementations, usually prompting this endpoint to be periodically probed for liveliness. If not supported by the underlying implementation, then this call does nothing.
        Parameters:
        address - the address to mark as unhealthy
        Since:
        5.4
        See Also:
        DiscoveryStrategy.markEndpointAsUnhealthy(Address)
      • getUnhealthyEndpoints

        @PrivateApi
        default java.util.Set<Address> getUnhealthyEndpoints()
        Fetches a set of Address marked as unhealthy by the underlying DiscoveryStrategy. If not supported by the underlying implementation, then this call returns an empty set.
        Returns:
        set of Address which are currently marked as unhealthy if supported by the underlying implementation, otherwise an empty set.
        Since:
        5.4
        See Also:
        DiscoveryStrategy.getUnhealthyEndpoints()