Class ConfigurableQuorumPolicy.ClusterQuorumPolicy

java.lang.Object
com.tangosol.util.Base
com.tangosol.net.ConfigurableQuorumPolicy
com.tangosol.net.ConfigurableQuorumPolicy.ClusterQuorumPolicy
All Implemented Interfaces:
ActionPolicy
Enclosing class:
ConfigurableQuorumPolicy

public static class ConfigurableQuorumPolicy.ClusterQuorumPolicy extends ConfigurableQuorumPolicy implements ActionPolicy
ClusterQuorumPolicy defines an action policy that is applicable to the cluster.
  • Field Details

    • ROLE_ALL

      public static final String ROLE_ALL
      The role identifier to use for matching any cluster members.
      See Also:
    • SITES

      public static final String SITES
      The role prefix to use for the "timeout-site-quorum".
      See Also:
    • MACHINES

      public static final String MACHINES
      The role prefix to use for the "timeout-machine-quorum".
      See Also:
    • m_service

      protected Service m_service
      The cluster service.
    • m_mapQuorumByRole

      protected Map<String,Integer> m_mapQuorumByRole
      The cluster membership quorum map, keyed by role name.
  • Constructor Details

    • ClusterQuorumPolicy

      protected ClusterQuorumPolicy(Map<String,Integer> mapQuorum)
      Construct a ClusterQuorumPolicy with the specified quorum map.
      Parameters:
      mapQuorum - cluster quorum map
  • Method Details

    • getClusterQuorumMap

      protected Map<String,Integer> getClusterQuorumMap()
      Return the cluster quorum map, keyed by role name.
      Returns:
      the cluster quorum map
    • setClusterQuorumMap

      protected void setClusterQuorumMap(Map mapQuorumByRole)
      Set the cluster quorum map, keyed by role name.
      Parameters:
      mapQuorumByRole - the cluster quorum map
    • getService

      public Service getService()
      Return the Cluster service.
      Returns:
      the Cluster service
    • setService

      public void setService(Service service)
      Set the Cluster service.
      Parameters:
      service - the Cluster service
    • getStatusDescription

      public String getStatusDescription()
      Return a String that describes the current Quorum state.
      Specified by:
      getStatusDescription in class ConfigurableQuorumPolicy
      Returns:
      a String describing the allowed actions in the current state
    • ensureSet

      protected Set ensureSet(Set set)
      Return the specified set, or an empty set if null.
      Parameters:
      set - the set to ensure, or null
      Returns:
      the specified set, or an empty set if null
    • groupMembersByRole

      protected Map<String,Set<Member>> groupMembersByRole(Set<Member> setMembers)
      Group the specified set of Members by their roles.
      Parameters:
      setMembers - the set of Members
      Returns:
      a map, keyed by role name, of the subsets of Members in that role
    • checkSiteQuorum

      protected boolean checkSiteQuorum(int cQuorum, Set<Member> setMembers, Set<Member> setTimedOut, Set<Member> setHealthy, Set<Member> setAnnouncing)
      Check whether the site quorum for the specified role will be satisfied if the set of suspect members is disconnected from the cluster, given the sets of "healthy" and "announcing" members.
      Parameters:
      setMembers - the set of cluster members in the specified role
      setTimedOut - the subset of cluster members in the specified role that are timed-out. A member is considered timed-out if it has not responded to some network communications within the configured timeout, and it has been selected for termination
      setHealthy - the subset of cluster members in the specified role that are known to be "healthy". A member is "healthy" if it has been "recently" heard from
      setAnnouncing - the set of potential new cluster members in the specified role that are announcing their presence and waiting to join the cluster
      Returns:
      true iff the site quorum for the specified role would be preserved if the specified timed-out members were disconnected
    • checkMachineQuorum

      protected boolean checkMachineQuorum(int cQuorum, Set<Member> setMembers, Set<Member> setTimedOut, Set<Member> setHealthy, Set<Member> setAnnouncing)
      Check whether the machine quorum for the specified role will be satisfied if the set of suspect members is disconnected from the cluster, given the sets of "healthy" and "announcing" members.
      Parameters:
      setMembers - the set of cluster members in the specified role
      setTimedOut - the subset of cluster members in the specified role that are timed-out. A member is considered timed-out if it has not responded to some network communications within the configured timeout, and it has been selected for termination
      setHealthy - the subset of cluster members in the specified role that are known to be "healthy". A member is "healthy" if it has been "recently" heard from
      setAnnouncing - the set of potential new cluster members in the specified role that are announcing their presence and waiting to join the cluster
      Returns:
      true iff the site quorum for the specified role would be preserved if the specified timed-out members were disconnected
    • checkRoleQuorum

      protected boolean checkRoleQuorum(int cQuorum, Set setMembers, Set setTimedOut, Set setHealthy, Set setAnnouncing)
      Check whether the member quorum for the specified role will be satisfied if the set of suspect members is disconnected from the cluster, given the sets of "healthy" and "announcing" members.
      Parameters:
      setMembers - the set of cluster members in the specified role
      setTimedOut - the subset of cluster members in the specified role that are timed-out. A member is considered timed-out if it has not responded to some network communications within the configured timeout, and it has been selected for termination
      setHealthy - the subset of cluster members in the specified role that are known to be "healthy". A member is "healthy" if it has been "recently" heard from
      setAnnouncing - the set of potential new cluster members in the specified role that are announcing their presence and waiting to join the cluster
      Returns:
      true iff the member quorum for the specified role would be preserved if the specified timed-out members were disconnected
    • init

      public void init(Service service)
      Called when the specified service loads and configures this policy.

      Note: A policy could be applied to multiple services.

      Specified by:
      init in interface ActionPolicy
      Parameters:
      service - the service that this policy applies to
    • isAllowed

      public boolean isAllowed(Service service, Action action)
      Evaluate if the specified action is currently allowed by this policy.

      Note: for forward compatibility, implementations should generally return true for actions that are not recognized.

      Specified by:
      isAllowed in interface ActionPolicy
      Parameters:
      service - the service that is performing the action
      action - the action that is being performed
      Returns:
      true iff the specified action is currently allowed by this policy