Class GenericCommandWorkerKind

java.lang.Object
com.illumon.iris.db.tables.remotequery.GenericCommandWorkerKind
All Implemented Interfaces:
LocalProcessWorkerKind, WorkerKind

public class GenericCommandWorkerKind extends Object implements WorkerKind, LocalProcessWorkerKind
A worker that executes a supplied command line.

This class is configured through properties that control the basic command line and provide options to the WorkerCommandBuilder through overriding methods to LocalProcessWorkerKind. To add a WorkerKind to the dispatcher, specify a property of the form WorkerKind.class.<i>name</i>=com.illumon.iris.db.tables.remotequery.GenericCommandWorkerKind. The name is used by the dispatcher to select this WorkerKind; and to determine the prefix for other properties. WorkerKind.<i>name</i>.command is required; and is the command (and arguments) that form the base of executed command. Arguments are separated by spaces and may be quoted, it is not possible to pass an empty command line argument (i.e. "").

In addition to the command property; you may specify:

WorkerKind.<i>name</i>.jvmIs this worker a JVM? If so, the command builder adds appropriate JVM arguments like heap size and property definitions
WorkerKind.<i>name</i>.includeNameInclude a -A argument for the name of the process.
WorkerKind.<i>name</i>.includeExtraClassPathsInclude temporary class paths generated by the dispatcher.
WorkerKind.<i>name</i>.includeArtifactArgumentsInclude -u, -t, and -r arguments for the artifact download script.
  • Constructor Details

    • GenericCommandWorkerKind

      public GenericCommandWorkerKind(String name)
  • Method Details

    • workerControlTypes

      public Collection<String> workerControlTypes()
      Description copied from interface: WorkerKind
      What kind of worker controls could be required for starting these kind of workers?
      Specified by:
      workerControlTypes in interface WorkerKind
      Returns:
      the desired WorkerControlType
    • getWorkerControlTypeForRequest

      public String getWorkerControlTypeForRequest(RemoteProcessingRequest request)
      Description copied from interface: WorkerKind
      The worker control type required for a particular request.
      Specified by:
      getWorkerControlTypeForRequest in interface WorkerKind
      Parameters:
      request - the request that a worker is being created for
      Returns:
      the type of worker control for this particular request
    • implementedProtocols

      public List<String> implementedProtocols()
      Description copied from interface: WorkerKind
      What protocols does this kind of worker implement?
      Specified by:
      implementedProtocols in interface WorkerKind
      Returns:
      a list of protocol names that this worker implements
    • needsJvmFlags

      public boolean needsJvmFlags()
      Description copied from interface: LocalProcessWorkerKind
      Does this produce a JVM that requires JVM like arguments
      Specified by:
      needsJvmFlags in interface LocalProcessWorkerKind
      Returns:
      true if this kind of worker needs JVM arguments
    • needsDheJvmFlags

      public boolean needsDheJvmFlags()
      Description copied from interface: LocalProcessWorkerKind
      Does this produce a JVM that requires DHE specific JVM arguments
      Specified by:
      needsDheJvmFlags in interface LocalProcessWorkerKind
      Returns:
      true if this kind of worker needs DHE specific JVM arguments
    • includeNameArgument

      public boolean includeNameArgument()
      Description copied from interface: LocalProcessWorkerKind
      True if -A "name" should be included on the command line.
      Specified by:
      includeNameArgument in interface LocalProcessWorkerKind
      Returns:
      true if the name argument is included
    • includeExtraClassPaths

      public boolean includeExtraClassPaths()
      Description copied from interface: LocalProcessWorkerKind
      True if temporary dispatcher produced class paths should be included on the command line with -C.
      Specified by:
      includeExtraClassPaths in interface LocalProcessWorkerKind
      Returns:
      true if the dispatcher's temporary classpaths should be included
    • includeArtifactArguments

      public boolean includeArtifactArguments()
      Description copied from interface: LocalProcessWorkerKind
      Some customers have custom artifacts per user, which are passed to the Enterprise start script with the -u, -t, and -r options. True if those options be included in the command.
      Specified by:
      includeArtifactArguments in interface LocalProcessWorkerKind
      Returns:
      true if -u, -t, and -r options should be included
    • newCommandHelper

      public LocalProcessWorkerKind.CommandHelper newCommandHelper()
      Description copied from interface: LocalProcessWorkerKind
      Create a helper for generating a new command line.
      Specified by:
      newCommandHelper in interface LocalProcessWorkerKind
      Returns:
      a new command line helper.
    • createPersistentQueryHandle

      public Object createPersistentQueryHandle(com.fishlib.io.logger.Logger log, Object queryHandleContext)
      Description copied from interface: WorkerKind
      Create a PersistentQueryHandle for use by the Controller. This is necessarily reflexive so implementations must guarantee that the returned object implements the PersistentQueryHandle interface.
      Specified by:
      createPersistentQueryHandle in interface WorkerKind
      Parameters:
      log - a Log object to use for logging
      queryHandleContext - an arbitrary context object to initialize the handle with.
      Returns:
      a new persistent query handle
    • getDescription

      @Nullable public String getDescription()
      Description copied from interface: WorkerKind
      Return an optional description of this WorkerKind for use in the UI.
      Specified by:
      getDescription in interface WorkerKind
      Returns:
      a description, or null
    • getTitle

      @NotNull public String getTitle()
      Description copied from interface: WorkerKind
      Return a string that should be used for drop-down menus in the UI.
      Specified by:
      getTitle in interface WorkerKind
      Returns:
      the title of the worker
    • displayOrder

      public int displayOrder()
      Description copied from interface: WorkerKind
      Return display order for dropdown list in web UI. Lower values are displayed first. Enterprise workers use displayOrder 100. Community workers use display order 200 by default, which for Vermilion and later installations is overridden in iris-environment.prop to 50.
      Specified by:
      displayOrder in interface WorkerKind
    • isCommunity

      public boolean isCommunity()
      Description copied from interface: WorkerKind
      Check if this kind is a Community worker kind
      Specified by:
      isCommunity in interface WorkerKind
      Returns:
      true if the worker kind is Community
    • getAllowedGroups

      public List<String> getAllowedGroups()
      Description copied from interface: WorkerKind
      Return a List of the groups allowed to run this WorkerKind.
      Specified by:
      getAllowedGroups in interface WorkerKind
      Returns:
      a List of the groups allowed to run this WorkerKind