Class ScatteredConsistentHash

    • Constructor Detail

      • ScatteredConsistentHash

        public ScatteredConsistentHash​(int numSegments,
                                       List<Address> members,
                                       Map<Address,​Float> capacityFactors,
                                       Address[] segmentOwners,
                                       boolean isRebalanced)
    • Method Detail

      • getNumSegments

        public int getNumSegments()
        Returns:
        The actual number of hash space segments. Note that it may not be the same as the number of segments passed in at creation time.
      • getSegmentsForOwner

        public Set<Integer> getSegmentsForOwner​(Address owner)
        Description copied from interface: ConsistentHash
        Returns the segments owned by a cache member.
        Parameters:
        owner - the address of the member
        Returns:
        a non-null set of segment IDs, may or may not be unmodifiable, which shouldn't be modified by caller. The set is empty if owner is not a member of the consistent hash.
      • getPrimarySegmentsForOwner

        public Set<Integer> getPrimarySegmentsForOwner​(Address owner)
        Description copied from interface: ConsistentHash
        Returns the segments that this cache member is the primary owner for.
        Parameters:
        owner - the address of the member
        Returns:
        a non-null set of segment IDs, may or may not be unmodifiable, which shouldn't be modified by caller. The set is empty if owner is not a member of the consistent hash.
      • locateOwnersForSegment

        public List<Address> locateOwnersForSegment​(int segmentId)
        Returns:
        All the nodes that own a given hash space segment, first address is the primary owner. The returned list is unmodifiable.
      • locatePrimaryOwnerForSegment

        public Address locatePrimaryOwnerForSegment​(int segmentId)
        Returns:
        The primary owner of a given hash space segment. This is equivalent to locateOwnersForSegment(segmentId).get(0) but is more efficient
      • isSegmentLocalToNode

        public boolean isSegmentLocalToNode​(Address nodeAddress,
                                            int segmentId)
        Description copied from interface: ConsistentHash
        Check if a segment is local to a given member.

        Implementation note: normally key-based method are implemented based on segment-based methods. Here, however, we need a default implementation for the segment-based method for backwards-compatibility reasons.

      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • getRoutingTableAsString

        public String getRoutingTableAsString()
        Description copied from interface: ConsistentHash
        Returns a string containing all the segments and their associated addresses.
      • remapAddresses

        public ConsistentHash remapAddresses​(UnaryOperator<Address> remapper)
        Description copied from interface: ConsistentHash
        Returns a new ConsistentHash with the addresses remapped according to the provided UnaryOperator. If an address cannot me remapped (i.e. the remapper returns null) this method should return null.
        Parameters:
        remapper - the remapper which given an address replaces it with another one
        Returns:
        the remapped ConsistentHash or null if one of the remapped addresses is null