Package org.apache.storm.daemon.supervisor

## Class ContainerLauncher

- java.lang.Object
- - org.apache.storm.daemon.supervisor.ContainerLauncher

- Direct Known Subclasses:
    `BasicContainerLauncher`, `LocalContainerLauncher`

      public abstract class ContainerLauncher
      extends Object

  Launches containers.

- - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `ContainerLauncher()` |

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `abstract Container` | `launchContainer​(int port, LocalAssignment assignment, LocalState state)` | Launch a container in a given slot.
    `static ContainerLauncher` | `make​(Map<String,​Object> conf, String supervisorId, int supervisorPort, IContext sharedContext, StormMetricsRegistry metricsRegistry, ContainerMemoryTracker containerMemoryTracker, Supervisor.Iface localSupervisor)` | Factory to create the right container launcher for the config and the environment.
    `abstract Container` | `recoverContainer​(int port, LocalAssignment assignment, LocalState state)` | Recover a container for a running process.
    `abstract Killable` | `recoverContainer​(String workerId, LocalState localState)` | Try to recover a container using just the worker ID.

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

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

- - ### Constructor Detail

    - #### ContainerLauncher

          protected ContainerLauncher()

  - ### Method Detail

    - #### make

          public static ContainerLauncher make​(Map<String,​Object> conf,
                                               String supervisorId,
                                               int supervisorPort,
                                               IContext sharedContext,
                                               StormMetricsRegistry metricsRegistry,
                                               ContainerMemoryTracker containerMemoryTracker,
                                               Supervisor.Iface localSupervisor)
                                        throws IOException

      Factory to create the right container launcher for the config and the environment.
      Parameters:
        `conf` - the config
        `supervisorId` - the ID of the supervisor
        `supervisorPort` - the parent supervisor thrift server port
        `sharedContext` - Used in local mode to let workers talk together without netty
        `metricsRegistry` - The metrics registry.
        `containerMemoryTracker` - The shared memory tracker for the supervisor's containers
        `localSupervisor` - The local supervisor Thrift interface. Only used for local clusters, distributed clusters use Thrift directly.
      Returns:
        the proper container launcher
      Throws:
        `IOException` - on any error

    - #### launchContainer

          public abstract Container launchContainer​(int port,
                                                    LocalAssignment assignment,
                                                    LocalState state)
                                             throws IOException

      Launch a container in a given slot.
      Parameters:
        `port` - the port to run this on
        `assignment` - what to launch
        `state` - the current state of the supervisor
      Returns:
        The container that can be used to manager the processes.
      Throws:
        `IOException` - on any error

    - #### recoverContainer

          public abstract Container recoverContainer​(int port,
                                                     LocalAssignment assignment,
                                                     LocalState state)
                                              throws IOException,
                                                     ContainerRecoveryException

      Recover a container for a running process.
      Parameters:
        `port` - the port the assignment is running on
        `assignment` - the assignment that was launched
        `state` - the current state of the supervisor
      Returns:
        The container that can be used to manage the processes.
      Throws:
        `IOException` - on any error
        `ContainerRecoveryException` - if the Container could not be recovered

    - #### recoverContainer

          public abstract Killable recoverContainer​(String workerId,
                                                    LocalState localState)
                                             throws IOException,
                                                    ContainerRecoveryException

      Try to recover a container using just the worker ID. The result is really only useful for killing the container and so is returning a Killable. Even if a Container is returned do not case the result to Container because only the Killable APIs are guaranteed to work.
      Parameters:
        `workerId` - the id of the worker to use
        `localState` - the state of the running supervisor
      Returns:
        a Killable that can be used to kill the underlying container.
      Throws:
        `IOException` - on any error
        `ContainerRecoveryException` - if the Container could not be recovered