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 int` | `DEFAULT_BLACKLIST_SCHEDULER_RESUME_TIME` |
    `static int` | `DEFAULT_BLACKLIST_SCHEDULER_TOLERANCE_COUNT` |
    `static 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

    All Methods Instance Methods Concrete Methods
    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 Detail

    - #### 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 Detail

    - #### BlacklistScheduler

          public BlacklistScheduler​(IScheduler underlyingScheduler)

  - ### Method Detail

    - #### 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`