Interface LaunchableService

All Superinterfaces:
AutoCloseable, Closeable, Service
All Known Implementing Classes:
AbstractLaunchableService

@Public @Evolving public interface LaunchableService extends Service
An interface which services can implement to have their execution managed by the ServiceLauncher.

The command line options will be passed down before the Service.init(Configuration) operation is invoked via an invocation of bindArgs(Configuration, List) After the service has been successfully started via Service.start() the execute() method is called to execute the service. When this method returns, the service launcher will exit, using the return code from the method as its exit option.

  • Method Details

    • bindArgs

      Configuration bindArgs(Configuration config, List<String> args) throws Exception
      Propagate the command line arguments.

      This method is called before Service.init(Configuration); Any non-null configuration that is returned from this operation becomes the one that is passed on to that Service.init(Configuration) operation.

      This permits implementations to change the configuration before the init operation. As the ServiceLauncher only creates an instance of the base Configuration class, it is recommended to instantiate any subclass (such as YarnConfiguration) that injects new resources.

      Parameters:
      config - the initial configuration build up by the service launcher.
      args - list of arguments passed to the command line after any launcher-specific commands have been stripped.
      Returns:
      the configuration to init the service with. Recommended: pass down the config parameter with any changes
      Throws:
      Exception - any problem
    • execute

      int execute() throws Exception
      Run a service. This method is called after Service.start().

      The return value becomes the exit code of the launched process.

      If an exception is raised, the policy is:

      1. Any subset of ExitUtil.ExitException: the exception is passed up unmodified.
      2. Any exception which implements ExitCodeProvider: A new ServiceLaunchException is created with the exit code and message of the thrown exception; the thrown exception becomes the cause.
      3. Any other exception: a new ServiceLaunchException is created with the exit code LauncherExitCodes.EXIT_EXCEPTION_THROWN and the message of the original exception (which becomes the cause).
      Returns:
      the exit code
      Throws:
      org.apache.hadoop.util.ExitUtil.ExitException - an exception passed up as the exit code and error text.
      Exception - any exception to report. If it provides an exit code this is used in a wrapping exception.