Class ThrottleStateUpdaterThread

java.lang.Object
org.graylog2.plugin.periodical.Periodical
org.graylog2.periodical.ThrottleStateUpdaterThread
All Implemented Interfaces:
Runnable

public class ThrottleStateUpdaterThread extends Periodical
The ThrottleStateUpdater publishes the current state buffer state of the journal to other interested parties, chiefly the ThrottleableTransports.

It only includes the necessary information to make a decision about whether to throttle parts of the system, but does not send "throttle" commands. This allows for a flexible approach in picking a throttling strategy.

The implementation expects to be called once per second to have a rough estimate about the events per second, over the last second.

  • Constructor Details

    • ThrottleStateUpdaterThread

      @Inject public ThrottleStateUpdaterThread(Journal journal, ProcessBuffer processBuffer, com.google.common.eventbus.EventBus eventBus, NotificationService notificationService, ServerStatus serverStatus, com.codahale.metrics.MetricRegistry metricRegistry, @Named("message_journal_max_size") com.github.joschi.jadconfig.util.Size retentionSize)
  • Method Details

    • runsForever

      public boolean runsForever()
      Description copied from class: Periodical
      Defines if this thread should be called periodically or only once on startup.
      Specified by:
      runsForever in class Periodical
      Returns:
    • stopOnGracefulShutdown

      public boolean stopOnGracefulShutdown()
      Description copied from class: Periodical
      Should this thread be stopped when a graceful shutdown is in progress? This means that stop() is called and that is no longer triggered periodically.
      Specified by:
      stopOnGracefulShutdown in class Periodical
      Returns:
    • leaderOnly

      public boolean leaderOnly()
      Description copied from class: Periodical
      Determines if this periodical should run only on the leader node.
      Overrides:
      leaderOnly in class Periodical
      Returns:
      false (default) if this periodical may run on every node. true if it may run only on the leader node
    • startOnThisNode

      public boolean startOnThisNode()
      Description copied from class: Periodical
      Start on this node? Useful to decide if to start the periodical based on local configuration.
      Specified by:
      startOnThisNode in class Periodical
      Returns:
    • isDaemon

      public boolean isDaemon()
      Description copied from class: Periodical
      Should this periodical be run as a daemon thread?
      Specified by:
      isDaemon in class Periodical
      Returns:
    • getInitialDelaySeconds

      public int getInitialDelaySeconds()
      Specified by:
      getInitialDelaySeconds in class Periodical
      Returns:
      Seconds to wait before starting the thread. 0 for runsForever() threads.
    • getPeriodSeconds

      public int getPeriodSeconds()
      Specified by:
      getPeriodSeconds in class Periodical
      Returns:
      How long to wait between each execution of the thread. 0 for runsForever() threads.
    • getLogger

      protected org.slf4j.Logger getLogger()
      Specified by:
      getLogger in class Periodical
    • doRun

      public void doRun()
      Specified by:
      doRun in class Periodical