Class GMS.DefaultMembershipPolicy

java.lang.Object
org.jgroups.protocols.pbcast.GMS.DefaultMembershipPolicy
All Implemented Interfaces:
MembershipChangePolicy
Direct Known Subclasses:
LargestWinningPolicy
Enclosing class:
GMS

public static class GMS.DefaultMembershipPolicy extends Object implements MembershipChangePolicy
  • Constructor Details

    • DefaultMembershipPolicy

      public DefaultMembershipPolicy()
  • Method Details

    • getNewMembership

      public List<Address> getNewMembership(Collection<Address> current_members, Collection<Address> joiners, Collection<Address> leavers, Collection<Address> suspects)
      Takes the existing membership list and removes suspected and left members, then adds new members to the end of the list
      Specified by:
      getNewMembership in interface MembershipChangePolicy
      Parameters:
      current_members - The list of current members. Guaranteed to be non-null (but may be empty)
      joiners - The joining members. Guaranteed to be non-null (but may be empty)
      leavers - Members that are leaving. Guaranteed to be non-null (but may be empty)
      suspects - Members which are suspected. Guaranteed to be non-null (but may be empty)
      Returns:
      The new membership. Needs to be non-null and cannot contain duplicates
    • getNewMembershipOld

      public static List<Address> getNewMembershipOld(Collection<Collection<Address>> subviews)
      Old default implementation for a merge. Adds all members into a list, sorts the list and returns it
      Parameters:
      subviews - A list of membership lists, e.g. [{A,B,C}, {M,N,O,P}, {X,Y,Z}]. This is a merge between 3 subviews. Guaranteed to be non-null (but may be empty)
      Returns:
      The new membership. Needs to be non-null and cannot contain duplicates
    • getNewMembership

      public List<Address> getNewMembership(Collection<Collection<Address>> subviews)
      Default implementation for a merge. Picks the new coordinator among the coordinators of the old subviews by getting all coords, sorting them and picking the first. Then the coord is added to the new list, and all subviews are subsequently added.

      Tries to minimize coordinatorship moving around between different members

      Specified by:
      getNewMembership in interface MembershipChangePolicy
      Parameters:
      subviews - A list of membership lists, e.g. [{A,B,C}, {M,N,O,P}, {X,Y,Z}]. This is a merge between 3 subviews. Guaranteed to be non-null (but may be empty)
      Returns:
      The new membership. Needs to be non-null and cannot contain duplicates