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

  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 Details

  - ### ContainerLauncher

    protected ContainerLauncher()

- ## Method Details

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