Class ClusterChangeMediator

  • All Implemented Interfaces:
    org.apache.helix.api.listeners.ExternalViewChangeListener, org.apache.helix.api.listeners.IdealStateChangeListener, org.apache.helix.api.listeners.InstanceConfigChangeListener, org.apache.helix.api.listeners.LiveInstanceChangeListener

    public class ClusterChangeMediator
    extends Object
    implements org.apache.helix.api.listeners.IdealStateChangeListener, org.apache.helix.api.listeners.ExternalViewChangeListener, org.apache.helix.api.listeners.InstanceConfigChangeListener, org.apache.helix.api.listeners.LiveInstanceChangeListener
    The ClusterChangeMediator handles the changes from Helix cluster.

    If there is no change callback in 1 hour, proactively check changes so that the changes are getting processed even when callbacks stop working.

    NOTE: disable Helix batch-mode and perform deduplication in this class. This can save us the extra threads for handling Helix batch-mode, and let us track the cluster change queue time.

    NOTE: disable Helix pre-fetch to reduce the ZK accesses.

    • Constructor Detail

      • ClusterChangeMediator

        public ClusterChangeMediator​(Map<org.apache.helix.HelixConstants.ChangeType,​List<ClusterChangeHandler>> changeHandlersMap,
                                     org.apache.pinot.common.metrics.BrokerMetrics brokerMetrics)
    • Method Detail

      • start

        public void start()
        Starts the cluster change mediator.
      • stop

        public void stop()
        Stops the cluster change mediator.
      • onIdealStateChange

        public void onIdealStateChange​(List<org.apache.helix.model.IdealState> idealStateList,
                                       org.apache.helix.NotificationContext changeContext)
                                throws InterruptedException
        Specified by:
        onIdealStateChange in interface org.apache.helix.api.listeners.IdealStateChangeListener
        Throws:
        InterruptedException
      • onExternalViewChange

        public void onExternalViewChange​(List<org.apache.helix.model.ExternalView> externalViewList,
                                         org.apache.helix.NotificationContext changeContext)
        Specified by:
        onExternalViewChange in interface org.apache.helix.api.listeners.ExternalViewChangeListener
      • onInstanceConfigChange

        public void onInstanceConfigChange​(List<org.apache.helix.model.InstanceConfig> instanceConfigs,
                                           org.apache.helix.NotificationContext changeContext)
        Specified by:
        onInstanceConfigChange in interface org.apache.helix.api.listeners.InstanceConfigChangeListener
      • onLiveInstanceChange

        public void onLiveInstanceChange​(List<org.apache.helix.model.LiveInstance> liveInstances,
                                         org.apache.helix.NotificationContext changeContext)
        Specified by:
        onLiveInstanceChange in interface org.apache.helix.api.listeners.LiveInstanceChangeListener