Class MailboxMetricsController

java.lang.Object
org.apache.flink.streaming.runtime.tasks.mailbox.MailboxMetricsController

@Internal public class MailboxMetricsController extends Object
Mailbox metrics controller class. The use of mailbox metrics, in particular scheduling latency measurements that require a TimerService, induce (cyclic) dependencies between MailboxProcessor and StreamTask. An instance of this class contains and gives control over these dependencies.
  • Field Details

    • defaultLatencyMeasurementInterval

      public final int defaultLatencyMeasurementInterval
      Default timer interval in milliseconds for triggering mailbox latency measurement.
      See Also:
  • Constructor Details

    • MailboxMetricsController

      public MailboxMetricsController(org.apache.flink.metrics.Histogram latencyHistogram, org.apache.flink.metrics.Counter mailCounter)
      Creates instance of MailboxMetricsController with references to metrics provided as parameters.
      Parameters:
      latencyHistogram - Histogram of mailbox latency measurements.
      mailCounter - Counter for number of mails processed.
  • Method Details

    • setupLatencyMeasurement

      public void setupLatencyMeasurement(TimerService timerService, org.apache.flink.api.common.operators.MailboxExecutor mailboxExecutor)
      Sets up latency measurement with required TimerService and MailboxExecutor.

      Note: For each instance, latency measurement can be set up only once.

      Parameters:
      timerService - TimerService used for latency measurement.
      mailboxExecutor - MailboxExecutor used for latency measurement.
    • startLatencyMeasurement

      public void startLatencyMeasurement()
      Starts mailbox latency measurement. This requires setup of latency measurement via setupLatencyMeasurement(TimerService, MailboxExecutor). Latency is measured through execution of a mail that is triggered by default in the interval defined by defaultLatencyMeasurementInterval.

      Note: For each instance, latency measurement can be started only once.

    • isLatencyMeasurementStarted

      public boolean isLatencyMeasurementStarted()
      Indicates if latency mesurement has been started.
      Returns:
      True if latency measurement has been started.
    • isLatencyMeasurementSetup

      public boolean isLatencyMeasurementSetup()
      Indicates if latency measurement has been setup.
      Returns:
      True if latency measurement has been setup.
    • getMailCounter

      public org.apache.flink.metrics.Counter getMailCounter()
      Gets Counter for number of mails processed.
      Returns:
      Counter for number of mails processed.
    • setLatencyMeasurementInterval

      @VisibleForTesting public void setLatencyMeasurementInterval(int measurementInterval)
    • measureMailboxLatency

      @VisibleForTesting public void measureMailboxLatency()