Class MainIngestionMonitorService

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public class MainIngestionMonitorService
    extends AbstractVeniceService
    This class is the listener service in main process which handles various kinds of reports sent from isolated ingestion service. MainIngestionMonitorService itself is a Netty based server implementation, and the main report handling logics happens in MainIngestionReportHandler. Besides reports handling, it also maintains two executor services to send heartbeat check and collect metrics to/from child process. Also, it maintains status for all the ongoing/completed topic partition ingestion tasks, which helps IsolatedIngestionBackend to check which process a topic partition storage is located, as well as status recovery when child process crashed and restarted.
    • Method Detail

      • addIngestionNotifier

        public void addIngestionNotifier​(VeniceNotifier ingestionListener)
      • getIngestionNotifier

        public java.util.List<VeniceNotifier> getIngestionNotifier()
      • addPushStatusNotifier

        public void addPushStatusNotifier​(VeniceNotifier pushStatusNotifier)
      • getPushStatusNotifierList

        public java.util.List<VeniceNotifier> getPushStatusNotifierList()
      • setMetricsRepository

        public void setMetricsRepository​(io.tehuti.metrics.MetricsRepository metricsRepository)
      • getMetricsRepository

        public io.tehuti.metrics.MetricsRepository getMetricsRepository()
      • isTopicPartitionInLeaderState

        public boolean isTopicPartitionInLeaderState​(java.lang.String topicName,
                                                     int partitionId)
      • setTopicPartitionToLeaderState

        public void setTopicPartitionToLeaderState​(java.lang.String topicName,
                                                   int partitionId)
      • setTopicIngestionToFollowerState

        public void setTopicIngestionToFollowerState​(java.lang.String topicName,
                                                     int partitionId)
      • getTopicPartitionIngestionStatus

        public MainPartitionIngestionStatus getTopicPartitionIngestionStatus​(java.lang.String topicName,
                                                                             int partitionId)
      • setVersionPartitionToLocalIngestion

        public void setVersionPartitionToLocalIngestion​(java.lang.String topicName,
                                                        int partitionId)
      • setVersionPartitionToIsolatedIngestion

        public void setVersionPartitionToIsolatedIngestion​(java.lang.String topicName,
                                                           int partitionId)
      • cleanupTopicPartitionState

        public void cleanupTopicPartitionState​(java.lang.String topicName,
                                               int partitionId)
      • cleanupTopicState

        public void cleanupTopicState​(java.lang.String topicName)
      • getTopicPartitionCount

        public long getTopicPartitionCount​(java.lang.String topicName)
      • getTopicIngestionStatusMap

        public java.util.Map<java.lang.String,​MainTopicIngestionStatus> getTopicIngestionStatusMap()
      • getTopicPartitionLeaderStatusMap

        public java.util.Map<java.lang.String,​java.util.Map<java.lang.Integer,​java.lang.Boolean>> getTopicPartitionLeaderStatusMap()
      • getForkProcessActionLock

        public java.util.concurrent.locks.ReentrantReadWriteLock getForkProcessActionLock()