Class AbstractPartitionStateModel

  • Direct Known Subclasses:
    LeaderFollowerPartitionStateModel

    public abstract class AbstractPartitionStateModel
    extends org.apache.helix.participant.statemachine.StateModel
    An abstraction of Helix State model behavior registry that defines how participants (Storage node) fetch data from Kafka. Helix state model is state machine defined by "states" and transitions (edges from one state to the other). In order to make Helix state machine work, 2 parts are required. 1. A model definition that defines all available states and transitions. 2. A behavior registry that defines what participant should do during transitions before moving to next state. Currently, we support LeaderStandbyModel participant model. Check out LeaderStandbySMD for model definition and LeaderFollowerPartitionStateModel for behavior registry.
    • Field Detail

      • logger

        protected final org.apache.logging.log4j.Logger logger
      • WAIT_DROP_PARTITION_TIME_OUT_MS

        protected static final long WAIT_DROP_PARTITION_TIME_OUT_MS
    • Method Detail

      • executeStateTransition

        protected void executeStateTransition​(org.apache.helix.model.Message message,
                                              org.apache.helix.NotificationContext context,
                                              java.lang.Runnable handler)
      • executeStateTransition

        protected void executeStateTransition​(org.apache.helix.model.Message message,
                                              org.apache.helix.NotificationContext context,
                                              java.lang.Runnable handler,
                                              boolean rollback)
      • rollbackOnError

        public void rollbackOnError​(org.apache.helix.model.Message message,
                                    org.apache.helix.NotificationContext context,
                                    org.apache.helix.participant.statemachine.StateTransitionError error)
        Stop the consumption once a replica become ERROR. This function only does clean up when any state transition fails, and it won't retry any state transition.
        Overrides:
        rollbackOnError in class org.apache.helix.participant.statemachine.StateModel
      • onBecomeDroppedFromError

        public void onBecomeDroppedFromError​(org.apache.helix.model.Message message,
                                             org.apache.helix.NotificationContext context)
        Handles ERROR->DROPPED transition. Unexpected Transition. Unsubscribe the partition, removes partition's data from local storage and clears the committed offset.
        Overrides:
        onBecomeDroppedFromError in class org.apache.helix.participant.statemachine.StateModel
      • reset

        public void reset()
        Overrides:
        reset in class org.apache.helix.participant.statemachine.StateModel
      • setupNewStorePartition

        protected void setupNewStorePartition()
        set up a new store partition and start the ingestion
      • removePartitionFromStoreGracefully

        protected java.util.concurrent.CompletableFuture<java.lang.Void> removePartitionFromStoreGracefully()
      • removeCustomizedState

        protected void removeCustomizedState()
        remove customized state for this partition if there is one
      • stopConsumption

        protected void stopConsumption​(boolean dropCVState)
      • getPartition

        protected int getPartition()
      • getStorePartitionDescription

        public java.lang.String getStorePartitionDescription()