Package org.apache.storm.scheduler.blacklist

# Class BlacklistScheduler

java.lang.Object
org.apache.storm.scheduler.blacklist.BlacklistScheduler

All Implemented Interfaces:
  `INodeAssignmentSentCallBack`, `IScheduler`

public class BlacklistScheduler extends Object implements IScheduler

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected org.apache.storm.shade.com.google.common.collect.EvictingQueue<Map<String,Set<Integer>>>`
  `badSupervisorsToleranceSlidingWindow`
  `protected Set<String>`
  `blacklistedSupervisorIds`
  `protected IBlacklistStrategy`
  `blacklistStrategy`
  `protected Map<String,Set<Integer>>`
  `cachedSupervisors`
  `static final int`
  `DEFAULT_BLACKLIST_SCHEDULER_RESUME_TIME`
  `static final int`
  `DEFAULT_BLACKLIST_SCHEDULER_TOLERANCE_COUNT`
  `static final int`
  `DEFAULT_BLACKLIST_SCHEDULER_TOLERANCE_TIME`
  `protected int`
  `nimbusMonitorFreqSecs`
  `protected IReporter`
  `reporter`
  `protected int`
  `resumeTime`
  `protected org.apache.storm.shade.com.google.common.collect.EvictingQueue<Map<String,Integer>>`
  `sendAssignmentFailureCount`
  `protected int`
  `toleranceCount`
  `protected int`
  `toleranceTime`
  `protected int`
  `windowSize`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `BlacklistScheduler(IScheduler underlyingScheduler)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `cleanup()`
  called once when the system is shutting down, should be idempotent.
  `Map<String,Map<String,Double>>`
  `config()`
  This function returns the scheduler's configuration.
  `Set<String>`
  `getBlacklistSupervisorIds()`
  `void`
  `nodeAssignmentSent(String node, boolean successful)`
  `void`
  `prepare(Map<String,Object> conf, StormMetricsRegistry metricsRegistry)`
  `void`
  `schedule(Topologies topologies, Cluster cluster)`
  Set assignments for the topologies which needs scheduling.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### DEFAULT_BLACKLIST_SCHEDULER_RESUME_TIME

    public static final int DEFAULT_BLACKLIST_SCHEDULER_RESUME_TIME
    See Also:
      - Constant Field Values

  - ### DEFAULT_BLACKLIST_SCHEDULER_TOLERANCE_COUNT

    public static final int DEFAULT_BLACKLIST_SCHEDULER_TOLERANCE_COUNT
    See Also:
      - Constant Field Values

  - ### DEFAULT_BLACKLIST_SCHEDULER_TOLERANCE_TIME

    public static final int DEFAULT_BLACKLIST_SCHEDULER_TOLERANCE_TIME
    See Also:
      - Constant Field Values

  - ### toleranceTime

    protected int toleranceTime

  - ### toleranceCount

    protected int toleranceCount

  - ### resumeTime

    protected int resumeTime

  - ### reporter

    protected IReporter reporter

  - ### blacklistStrategy

    protected IBlacklistStrategy blacklistStrategy

  - ### nimbusMonitorFreqSecs

    protected int nimbusMonitorFreqSecs

  - ### cachedSupervisors

    protected Map<String,Set<Integer>> cachedSupervisors

  - ### badSupervisorsToleranceSlidingWindow

    protected org.apache.storm.shade.com.google.common.collect.EvictingQueue<Map<String,Set<Integer>>> badSupervisorsToleranceSlidingWindow

  - ### sendAssignmentFailureCount

    protected org.apache.storm.shade.com.google.common.collect.EvictingQueue<Map<String,Integer>> sendAssignmentFailureCount

  - ### windowSize

    protected int windowSize

  - ### blacklistedSupervisorIds

    protected volatile Set<String> blacklistedSupervisorIds

- ## Constructor Details

  - ### BlacklistScheduler

    public BlacklistScheduler(IScheduler underlyingScheduler)

- ## Method Details

  - ### prepare

    public void prepare(Map<String,Object> conf, StormMetricsRegistry metricsRegistry)
    Specified by:
      `prepare` in interface `IScheduler`

  - ### cleanup

    public void cleanup()
    Description copied from interface: `IScheduler`
    called once when the system is shutting down, should be idempotent.
    Specified by:
      `cleanup` in interface `IScheduler`

  - ### schedule

    public void schedule(Topologies topologies, Cluster cluster)
    Description copied from interface: `IScheduler`
    Set assignments for the topologies which needs scheduling. The new assignments is available through `cluster.getAssignments()`
    Specified by:
      `schedule` in interface `IScheduler`
    Parameters:
      `topologies` - all the topologies in the cluster, some of them need schedule. Topologies object here only contain static information about topologies. Information like assignments, slots are all in the `cluster` object.
      `cluster` - the cluster these topologies are running in. `cluster` contains everything user need to develop a new scheduling logic. e.g. supervisors information, available slots, current assignments for all the topologies etc. User can set the new assignment for topologies using cluster.setAssignmentById()`

  - ### config

    public Map<String,Map<String,Double>> config()
    Description copied from interface: `IScheduler`
    This function returns the scheduler's configuration.
    Specified by:
      `config` in interface `IScheduler`
    Returns:
      The scheduler's configuration.

  - ### getBlacklistSupervisorIds

    public Set<String> getBlacklistSupervisorIds()

  - ### nodeAssignmentSent

    public void nodeAssignmentSent(String node, boolean successful)
    Specified by:
      `nodeAssignmentSent` in interface `INodeAssignmentSentCallBack`