Package org.apache.storm.nimbus

## Interface ILeaderElector

- All Superinterfaces:
    `AutoCloseable`
  All Known Implementing Classes:
    `LeaderElectorImp`, `MockLeaderElector`

      public interface ILeaderElector
      extends AutoCloseable

  The interface for leader election.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addToLeaderLockQueue()` | queue up for leadership lock.
    `boolean` | `awaitLeadership​(long timeout, TimeUnit timeUnit)` | Wait for the caller to gain leadership.
    `void` | `close()` | Method called to allow for cleanup.
    `List<NimbusInfo>` | `getAllNimbuses()` | Get list of current nimbus addresses.
    `NimbusInfo` | `getLeader()` | Get the current leader's address.
    `boolean` | `isLeader()` | Decide if the caller currently has the leader lock.
    `void` | `prepare​(Map<String,​Object> conf)` | Method guaranteed to be called as part of initialization of leader elector instance.
    `void` | `quitElectionFor​(int delayMs)` | Removes the caller from leadership election, relinquishing leadership if acquired, then requeues for leadership after the specified delay.

- - ### Method Detail

    - #### prepare

          void prepare​(Map<String,​Object> conf)

      Method guaranteed to be called as part of initialization of leader elector instance.
      Parameters:
        `conf` - configuration

    - #### addToLeaderLockQueue

          void addToLeaderLockQueue()
                             throws Exception

      queue up for leadership lock. The call returns immediately and the caller must check isLeader() to perform any leadership action. This method can be called multiple times so it needs to be idempotent.
      Throws:
        `Exception`

    - #### quitElectionFor

          void quitElectionFor​(int delayMs)
                        throws Exception

      Removes the caller from leadership election, relinquishing leadership if acquired, then requeues for leadership after the specified delay.
      Parameters:
        `delayMs` - The delay to wait before re-entering the election
      Throws:
        `Exception`

    - #### isLeader

          boolean isLeader()
                    throws Exception

      Decide if the caller currently has the leader lock.
      Returns:
        true if the caller currently has the leader lock.
      Throws:
        `Exception`

    - #### getLeader

          NimbusInfo getLeader()

      Get the current leader's address.
      Returns:
        the current leader's address, may return null if no one has the lock.

    - #### awaitLeadership

          boolean awaitLeadership​(long timeout,
                                  TimeUnit timeUnit)
                           throws InterruptedException

      Wait for the caller to gain leadership. This should only be used in single-Nimbus clusters, and is only useful to allow testing code to wait for a LocalCluster's Nimbus to gain leadership before trying to submit topologies.
      Returns:
        true is leadership was acquired, false otherwise
      Throws:
        `InterruptedException`

    - #### getAllNimbuses

          List<NimbusInfo> getAllNimbuses()
                                   throws Exception

      Get list of current nimbus addresses.
      Returns:
        list of current nimbus addresses, includes leader.
      Throws:
        `Exception`

    - #### close

          void close()
              throws Exception

      Method called to allow for cleanup. Relinquishes leadership if owned by the caller.
      Specified by:
        `close` in interface `AutoCloseable`
      Throws:
        `Exception`