Class ShardTerms

    • Constructor Detail

      • ShardTerms

        public ShardTerms()
      • ShardTerms

        public ShardTerms​(ShardTerms newTerms,
                          int version)
      • ShardTerms

        public ShardTerms​(Map<String,​Long> values,
                          int version)
    • Method Detail

      • canBecomeLeader

        public boolean canBecomeLeader​(String coreNodeName)
        Can coreNodeName become leader?
        Parameters:
        coreNodeName - of the replica
        Returns:
        true if coreNodeName can become leader, false if otherwise
      • haveHighestTermValue

        public boolean haveHighestTermValue​(String coreNodeName)
        Is coreNodeName's term highest?
        Parameters:
        coreNodeName - of the replica
        Returns:
        true if term of coreNodeName is highest
      • getTerm

        public Long getTerm​(String coreNodeName)
      • increaseTerms

        public ShardTerms increaseTerms​(String leader,
                                        Set<String> replicasNeedingRecovery)
        Return a new ShardTerms in which term of leader is higher than replicasNeedingRecovery
        Parameters:
        leader - coreNodeName of leader
        replicasNeedingRecovery - set of replicas in which their terms should be lower than leader's term
        Returns:
        null if term of leader is already higher than replicasNeedingRecovery
      • ensureHighestTermsAreNotZero

        public ShardTerms ensureHighestTermsAreNotZero()
        Return a new ShardTerms in which highest terms are not zero
        Returns:
        null if highest terms are already larger than zero
      • removeTerm

        public ShardTerms removeTerm​(String coreNodeName)
        Return a new ShardTerms in which terms for the coreNodeName are removed
        Parameters:
        coreNodeName - of the replica
        Returns:
        null if term of coreNodeName is already not exist
      • registerTerm

        public ShardTerms registerTerm​(String coreNodeName)
        Return a new ShardTerms in which the associate term of coreNodeName is not null
        Parameters:
        coreNodeName - of the replica
        Returns:
        null if term of coreNodeName is already exist
      • setTermEqualsToLeader

        public ShardTerms setTermEqualsToLeader​(String coreNodeName)
        Return a new ShardTerms in which the term of coreNodeName is max
        Parameters:
        coreNodeName - of the replica
        Returns:
        null if term of coreNodeName is already maximum
      • getMaxTerm

        public long getMaxTerm()
      • startRecovering

        public ShardTerms startRecovering​(String coreNodeName)
        Mark coreNodeName as recovering
        Parameters:
        coreNodeName - of the replica
        Returns:
        null if coreNodeName is already marked as doing recovering
      • doneRecovering

        public ShardTerms doneRecovering​(String coreNodeName)
        Mark coreNodeName as finished recovering
        Parameters:
        coreNodeName - of the replica
        Returns:
        null if term of coreNodeName is already finished doing recovering
      • recoveringTerm

        public static String recoveringTerm​(String coreNodeName)
      • getVersion

        public int getVersion()
      • isRecovering

        public boolean isRecovering​(String name)