cascading.flow.planner

## Class BaseFlowStep<Config>

- java.lang.Object
- - cascading.flow.planner.BaseFlowStep<Config>

All Implemented Interfaces:
  FlowStep<Config>, ProcessModel, ProcessLogger, java.io.Serializable

Direct Known Subclasses:
  Hadoop2TezFlowStep, HadoopFlowStep, LocalFlowStep, ProcessFlowStep

    public abstract class BaseFlowStep<Config>
    extends java.lang.Object
    implements FlowStep<Config>, ProcessLogger, java.io.Serializable

Class FlowStep is an internal representation of a given Job to be executed on a remote cluster. During planning, pipe assemblies are broken down into "steps" and encapsulated in this class.

FlowSteps are submitted in order of dependency. If two or more steps do not share the same dependencies and all can be scheduled simultaneously, the `getSubmitPriority()` value determines the order in which all steps will be submitted for execution. The default submit priority is 5.

This class is for internal use, there are no stable public methods.

See Also:
  Serialized Form

### Field Summary

Fields
`protected ElementGraph` `elementGraph` Field elementGraph
`protected FlowNodeGraph` `flowNodeGraph` Field flowNodeGraph
`protected FlowStepStats` `flowStepStats`
`protected java.util.Map<Tap,java.util.Set<java.lang.String>>` `sinks` Field sink
`protected java.util.Map<Tap,java.util.Set<java.lang.String>>` `sources` Field sources
`protected Tap` `tempSink` Field tempSink

### Fields inherited from interface cascading.flow.FlowStep

`CASCADING_FLOW_STEP_ID`

### Fields inherited from interface cascading.util.ProcessLogger

`NULL`

### Constructor Summary

Constructors
`protected` `BaseFlowStep()`
`protected` `BaseFlowStep(ElementGraph elementStepGraph, FlowNodeGraph flowNodeGraph)`
`protected` `BaseFlowStep(ElementGraph elementStepGraph, FlowNodeGraph flowNodeGraph, java.util.Map<java.lang.String,java.lang.String> flowStepDescriptor)`
`protected` `BaseFlowStep(java.lang.String name, int ordinal)`
`protected` `BaseFlowStep(java.lang.String name, int ordinal, FlowNodeGraph flowNodeGraph, java.util.Map<java.lang.String,java.lang.String> flowStepDescriptor)`
`protected` `BaseFlowStep(java.lang.String name, int ordinal, java.util.Map<java.lang.String,java.lang.String> flowStepDescriptor)`

### Method Summary

Methods
`protected void` `addAllGroups()`
`void` `addGroup(Group group)`
`void` `addGroups(java.util.Collection<Group> groups)`
`void` `addListener(FlowStepListener flowStepListener)` Method addListener registers the given `FlowStepListener` with this instance.
`void` `addProcessAnnotation(java.lang.Enum annotation)`
`void` `addProcessAnnotation(java.lang.String key, java.lang.String value)`
`void` `addSink(java.lang.String name, Tap sink)`
`protected static void` `addSinks(BaseFlowStep flowStep, ElementGraph elementGraph, java.util.Set<Tap> sinks)`
`void` `addSource(java.lang.String name, Tap source)`
`protected static void` `addSources(BaseFlowStep flowStep, ElementGraph elementGraph, java.util.Set<Tap> sources)`
`void` `clean()`
`abstract void` `clean(Config config)`
`protected java.lang.Throwable` `commitSinks()`
`protected void` `configure()`
`boolean` `containsPipeNamed(java.lang.String pipeName)` Returns true if this FlowStep contains a pipe/branch with the given name.
`protected ClientState` `createClientState(FlowProcess flowProcess)`
`protected abstract FlowStepJob` `createFlowStepJob(ClientState clientState, FlowProcess<Config> flowProcess, Config initializedStepConfig)`
`abstract Config` `createInitializedConfig(FlowProcess<Config> flowProcess, Config parentConfig)` Public for testing.
`boolean` `equals(java.lang.Object object)`
`protected void` `fireOnCompleted()`
`protected void` `fireOnRunning()`
`protected void` `fireOnStarting()`
`protected void` `fireOnStopping()`
`protected void` `fireOnThrowable(java.lang.Throwable throwable)`
`java.util.Set<Tap>` `getAllAccumulatedSources()` Returns all source Tap instances annotated by the planner as being `StreamMode.Accumulated`.
`java.util.Collection<Operation>` `getAllOperations()`
`java.util.Set<Tap>` `getAllStreamedSources()` Returns all source Tap instances annotated by the planner as being `StreamMode.Streamed`.
`protected EnumMultiMap` `getAnnotations()`
`Config` `getConfig()` Method getConfig returns the current initialized configuration.
`java.util.Map<java.lang.Object,java.lang.Object>` `getConfigAsProperties()` Method getConfigAsProperties converts the internal configuration object into a `Map` of key value pairs.
`FlowStepJob<Config>` `getCreateFlowStepJob(FlowProcess<Config> flowProcess, Config parentConfig)`
`ElementGraph` `getElementGraph()`
`Flow<Config>` `getFlow()`
`java.lang.String` `getFlowID()`
`java.lang.String` `getFlowName()` Method getParentFlowName returns the parentFlowName of this FlowStep object.
`FlowNodeGraph` `getFlowNodeGraph()`
`java.util.Map<java.lang.String,java.lang.String>` `getFlowStepDescriptor()` Returns an immutable map of properties giving more details about the FlowStep object.
`FlowStepJob<Config>` `getFlowStepJob()`
`FlowStepStats` `getFlowStepStats()`
`Group` `getGroup()`
`java.util.Collection<Group>` `getGroups()`
`java.lang.String` `getID()` Method getId returns the id of this FlowStep object.
`java.lang.String` `getName()` Method getName returns the name of this FlowStep object.
`FlowElement` `getNextFlowElement(Scope scope)`
`Scope` `getNextScope(FlowElement flowElement)` Method getNextScope returns the next Scope instance in the graph.
`protected java.lang.String` `getNodeDisplayName(FlowNode flowNode, int idLength)`
`int` `getNumFlowNodes()`
`int` `getOrdinal()`
`java.util.Set<Scope>` `getPreviousScopes(FlowElement flowElement)` Method getPreviousScopes returns the previous Scope instances.
`java.util.Map<java.lang.String,java.lang.String>` `getProcessAnnotations()` Method getProcessAnnotations returns an immutable Map of platform specific annotations or meta-data that describe the current model type.
`Tap` `getSink()`
`java.util.Set<FlowElement>` `getSinkElements()`
`java.util.Set<java.lang.String>` `getSinkName(Tap sink)`
`java.util.Set<Tap>` `getSinkTaps()`
`Tap` `getSinkWith(java.lang.String identifier)`
`java.util.Set<FlowElement>` `getSourceElements()`
`java.util.Set<java.lang.String>` `getSourceName(Tap source)`
`java.util.Set<Tap>` `getSourceTaps()`
`Tap` `getSourceWith(java.lang.String identifier)`
`java.lang.String` `getStepDisplayName()` Method getStepDisplayName returns the stepDisplayName of this FlowStep object.
`protected java.lang.String` `getStepDisplayName(int idLength)`
`int` `getSubmitPriority()` Method getSubmitPriority returns the submitPriority of this FlowStep object.
`Tap` `getTrap(java.lang.String name)`
`java.util.Map<java.lang.String,Tap>` `getTrapMap()`
`java.util.Set<Tap>` `getTraps()`
`int` `hashCode()`
`boolean` `hasListeners()` Method hasListeners returns true if `FlowStepListener` instances have been registered.
`protected void` `initConfFromNodeConfigDef(ElementGraph nodeElementGraph, ConfigDef.Setter setter)`
`protected void` `initConfFromStepConfigDef(ConfigDef.Setter setter)`
`boolean` `isDebugEnabled()`
`boolean` `isInfoEnabled()`
`void` `logDebug(java.lang.String message, java.lang.Object... arguments)`
`void` `logError(java.lang.String message, java.lang.Object... arguments)`
`void` `logError(java.lang.String message, java.lang.Throwable throwable)`
`void` `logInfo(java.lang.String message, java.lang.Object... arguments)`
`void` `logWarn(java.lang.String message)`
`void` `logWarn(java.lang.String message, java.lang.Object... arguments)`
`void` `logWarn(java.lang.String message, java.lang.Throwable throwable)`
`protected java.lang.Throwable` `prepareResources()`
`boolean` `removeListener(FlowStepListener flowStepListener)` Method removeListener removes the given flowStepListener from this instance.
`protected java.lang.Throwable` `rollbackSinks()`
`protected void` `setConfig(Config flowStepConf)` Set the initialized flowStepConf Config instance
`void` `setFlow(Flow<Config> flow)`
`protected void` `setFlowName(java.lang.String flowName)`
`protected void` `setFlowStepDescriptor(java.util.Map<java.lang.String,java.lang.String> flowStepDescriptor)`
`void` `setFlowStepStats(FlowStepStats flowStepStats)`
`void` `setName(java.lang.String name)`
`void` `setOrdinal(int ordinal)`
`void` `setSubmitPriority(int submitPriority)` Method setSubmitPriority sets the submitPriority of this FlowStep object.
`java.lang.String` `toString()`

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

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Field Detail

#### elementGraph

    protected ElementGraph elementGraph

Field elementGraph

#### flowNodeGraph

    protected FlowNodeGraph flowNodeGraph

Field flowNodeGraph

#### sources

    protected final java.util.Map<Tap,java.util.Set<java.lang.String>> sources

Field sources

#### sinks

    protected final java.util.Map<Tap,java.util.Set<java.lang.String>> sinks

Field sink

#### tempSink

    protected Tap tempSink

Field tempSink

#### flowStepStats

    protected transient FlowStepStats flowStepStats

### Constructor Detail

#### BaseFlowStep

    protected BaseFlowStep(java.lang.String name,
                int ordinal)

#### BaseFlowStep

    protected BaseFlowStep(java.lang.String name,
                int ordinal,
                java.util.Map<java.lang.String,java.lang.String> flowStepDescriptor)

#### BaseFlowStep

    protected BaseFlowStep(java.lang.String name,
                int ordinal,
                FlowNodeGraph flowNodeGraph,
                java.util.Map<java.lang.String,java.lang.String> flowStepDescriptor)

#### BaseFlowStep

    protected BaseFlowStep(ElementGraph elementStepGraph,
                FlowNodeGraph flowNodeGraph)

#### BaseFlowStep

    protected BaseFlowStep(ElementGraph elementStepGraph,
                FlowNodeGraph flowNodeGraph,
                java.util.Map<java.lang.String,java.lang.String> flowStepDescriptor)

#### BaseFlowStep

    protected BaseFlowStep()

### Method Detail

#### configure

    protected void configure()

#### addAllGroups

    protected void addAllGroups()

#### getID

    public java.lang.String getID()

Description copied from interface: `FlowStep`
Method getId returns the id of this FlowStep object.

Specified by:
  `getID` in interface `FlowStep<Config>`
Specified by:
  `getID` in interface `ProcessModel`
Returns:
  the id (type int) of this FlowStep object.

#### setOrdinal

    public void setOrdinal(int ordinal)

#### getOrdinal

    public int getOrdinal()

Specified by:
  `getOrdinal` in interface `FlowStep<Config>`
Specified by:
  `getOrdinal` in interface `ProcessModel`

#### getName

    public java.lang.String getName()

Description copied from interface: `FlowStep`
Method getName returns the name of this FlowStep object.

Specified by:
  `getName` in interface `FlowStep<Config>`
Specified by:
  `getName` in interface `ProcessModel`
Returns:
  the name (type String) of this FlowStep object.

#### setName

    public void setName(java.lang.String name)

#### getFlowStepDescriptor

    public java.util.Map<java.lang.String,java.lang.String> getFlowStepDescriptor()

Description copied from interface: `FlowStep`
Returns an immutable map of properties giving more details about the FlowStep object.

FlowStep descriptions provide meta-data to monitoring systems describing the workload a given FlowStep represents. For known description types, see `FlowStepDescriptors`.

Specified by:
  `getFlowStepDescriptor` in interface `FlowStep<Config>`
Returns:
  Map<String,String>

#### setFlowStepDescriptor

    protected void setFlowStepDescriptor(java.util.Map<java.lang.String,java.lang.String> flowStepDescriptor)

#### getProcessAnnotations

    public java.util.Map<java.lang.String,java.lang.String> getProcessAnnotations()

Description copied from interface: `ProcessModel`
Method getProcessAnnotations returns an immutable Map of platform specific annotations or meta-data that describe the current model type.

Use `ProcessModel.addProcessAnnotation(Enum)` or `ProcessModel.addProcessAnnotation(String, String)` to insert annotations or meta-data.

Specified by:
  `getProcessAnnotations` in interface `ProcessModel`
Returns:
  an immutable Map

#### addProcessAnnotation

    public void addProcessAnnotation(java.lang.Enum annotation)

Specified by:
  `addProcessAnnotation` in interface `ProcessModel`

#### addProcessAnnotation

    public void addProcessAnnotation(java.lang.String key,
                            java.lang.String value)

Specified by:
  `addProcessAnnotation` in interface `ProcessModel`

#### setFlow

    public void setFlow(Flow<Config> flow)

#### getFlow

    public Flow<Config> getFlow()

Specified by:
  `getFlow` in interface `FlowStep<Config>`

#### getFlowID

    public java.lang.String getFlowID()

Specified by:
  `getFlowID` in interface `FlowStep<Config>`

#### getFlowName

    public java.lang.String getFlowName()

Description copied from interface: `FlowStep`
Method getParentFlowName returns the parentFlowName of this FlowStep object.

Specified by:
  `getFlowName` in interface `FlowStep<Config>`
Returns:
  the parentFlowName (type Flow) of this FlowStep object.

#### setFlowName

    protected void setFlowName(java.lang.String flowName)

#### getConfig

    public Config getConfig()

Description copied from interface: `FlowStep`
Method getConfig returns the current initialized configuration.

The returned configuration is mutable and may be changed prior to this step being started or submitted.

Specified by:
  `getConfig` in interface `FlowStep<Config>`
Returns:
  the current initialized configuration

#### getConfigAsProperties

    public java.util.Map<java.lang.Object,java.lang.Object> getConfigAsProperties()

Description copied from interface: `FlowStep`
Method getConfigAsProperties converts the internal configuration object into a `Map` of key value pairs.

Specified by:
  `getConfigAsProperties` in interface `FlowStep<Config>`
Returns:
  a Map of key/value pairs, may return an empty collection if unsupported

#### setConfig

    protected void setConfig(Config flowStepConf)

Set the initialized flowStepConf Config instance

Parameters:
  `flowStepConf` - of type Config

#### getStepDisplayName

    public java.lang.String getStepDisplayName()

Description copied from interface: `FlowStep`
Method getStepDisplayName returns the stepDisplayName of this FlowStep object.

Specified by:
  `getStepDisplayName` in interface `FlowStep<Config>`
Returns:
  the stepName (type String) of this FlowStep object.

#### getStepDisplayName

    protected java.lang.String getStepDisplayName(int idLength)

#### getNodeDisplayName

    protected java.lang.String getNodeDisplayName(FlowNode flowNode,
                                      int idLength)

#### getSubmitPriority

    public int getSubmitPriority()

Description copied from interface: `FlowStep`
Method getSubmitPriority returns the submitPriority of this FlowStep object.

10 is lowest, 1 is the highest, 5 is the default.

Specified by:
  `getSubmitPriority` in interface `FlowStep<Config>`
Specified by:
  `getSubmitPriority` in interface `ProcessModel`
Returns:
  the submitPriority (type int) of this FlowStep object.

#### setSubmitPriority

    public void setSubmitPriority(int submitPriority)

Description copied from interface: `FlowStep`
Method setSubmitPriority sets the submitPriority of this FlowStep object.

10 is lowest, 1 is the highest, 5 is the default.

Specified by:
  `setSubmitPriority` in interface `FlowStep<Config>`
Parameters:
  `submitPriority` - the submitPriority of this FlowStep object.

#### setFlowStepStats

    public void setFlowStepStats(FlowStepStats flowStepStats)

Specified by:
  `setFlowStepStats` in interface `FlowStep<Config>`

#### getFlowStepStats

    public FlowStepStats getFlowStepStats()

Specified by:
  `getFlowStepStats` in interface `FlowStep<Config>`

#### getElementGraph

    public ElementGraph getElementGraph()

Specified by:
  `getElementGraph` in interface `ProcessModel`

#### getAnnotations

    protected EnumMultiMap getAnnotations()

#### getFlowNodeGraph

    public FlowNodeGraph getFlowNodeGraph()

Specified by:
  `getFlowNodeGraph` in interface `FlowStep<Config>`

#### getNumFlowNodes

    public int getNumFlowNodes()

Specified by:
  `getNumFlowNodes` in interface `FlowStep<Config>`

#### getSourceElements

    public java.util.Set<FlowElement> getSourceElements()

Specified by:
  `getSourceElements` in interface `ProcessModel`

#### getSinkElements

    public java.util.Set<FlowElement> getSinkElements()

Specified by:
  `getSinkElements` in interface `ProcessModel`

#### getGroup

    public Group getGroup()

Specified by:
  `getGroup` in interface `FlowStep<Config>`

#### getGroups

    public java.util.Collection<Group> getGroups()

Specified by:
  `getGroups` in interface `ProcessModel`

#### addGroups

    public void addGroups(java.util.Collection<Group> groups)

#### addGroup

    public void addGroup(Group group)

#### getAllAccumulatedSources

    public java.util.Set<Tap> getAllAccumulatedSources()

Returns all source Tap instances annotated by the planner as being `StreamMode.Accumulated`.

Returns:
  Set of accumulated Tap instances

#### getAllStreamedSources

    public java.util.Set<Tap> getAllStreamedSources()

Returns all source Tap instances annotated by the planner as being `StreamMode.Streamed`.

Returns:
  Set of streamed Tap instances

#### addSource

    public void addSource(java.lang.String name,
                 Tap source)

#### addSink

    public void addSink(java.lang.String name,
               Tap sink)

#### getSourceTaps

    public java.util.Set<Tap> getSourceTaps()

Specified by:
  `getSourceTaps` in interface `ProcessModel`

#### getSinkTaps

    public java.util.Set<Tap> getSinkTaps()

Specified by:
  `getSinkTaps` in interface `ProcessModel`

#### getSink

    public Tap getSink()

Specified by:
  `getSink` in interface `FlowStep<Config>`

#### getSourceName

    public java.util.Set<java.lang.String> getSourceName(Tap source)

Specified by:
  `getSourceName` in interface `FlowStep<Config>`

#### getSinkName

    public java.util.Set<java.lang.String> getSinkName(Tap sink)

Specified by:
  `getSinkName` in interface `FlowStep<Config>`

#### getSourceWith

    public Tap getSourceWith(java.lang.String identifier)

Specified by:
  `getSourceWith` in interface `FlowStep<Config>`

#### getSinkWith

    public Tap getSinkWith(java.lang.String identifier)

Specified by:
  `getSinkWith` in interface `FlowStep<Config>`

#### getTrapMap

    public java.util.Map<java.lang.String,Tap> getTrapMap()

Specified by:
  `getTrapMap` in interface `ProcessModel`

#### getTraps

    public java.util.Set<Tap> getTraps()

Specified by:
  `getTraps` in interface `FlowStep<Config>`

#### getTrap

    public Tap getTrap(java.lang.String name)

Specified by:
  `getTrap` in interface `FlowStep<Config>`

#### prepareResources

    protected java.lang.Throwable prepareResources()

#### commitSinks

    protected java.lang.Throwable commitSinks()

#### rollbackSinks

    protected java.lang.Throwable rollbackSinks()

#### createInitializedConfig

    public abstract Config createInitializedConfig(FlowProcess<Config> flowProcess,
                                 Config parentConfig)

Public for testing.

Parameters:
  `flowProcess` -
  `parentConfig` -
Returns:

#### getPreviousScopes

    public java.util.Set<Scope> getPreviousScopes(FlowElement flowElement)

Method getPreviousScopes returns the previous Scope instances. If the flowElement is a Group (specifically a CoGroup), there will be more than one instance.

Parameters:
  `flowElement` - of type FlowElement
Returns:
  Set<Scope>

#### getNextScope

    public Scope getNextScope(FlowElement flowElement)

Method getNextScope returns the next Scope instance in the graph. There will always only be one next.

Parameters:
  `flowElement` - of type FlowElement
Returns:
  Scope

#### getNextFlowElement

    public FlowElement getNextFlowElement(Scope scope)

#### getAllOperations

    public java.util.Collection<Operation> getAllOperations()

#### containsPipeNamed

    public boolean containsPipeNamed(java.lang.String pipeName)

Description copied from interface: `FlowStep`
Returns true if this FlowStep contains a pipe/branch with the given name.

Specified by:
  `containsPipeNamed` in interface `FlowStep<Config>`
Parameters:
  `pipeName` - the name of the Pipe
Returns:
  a boolean

#### clean

    public void clean()

#### clean

    public abstract void clean(Config config)

#### hasListeners

    public boolean hasListeners()

Description copied from interface: `FlowStep`
Method hasListeners returns true if `FlowStepListener` instances have been registered.

Specified by:
  `hasListeners` in interface `FlowStep<Config>`
Returns:
  boolean

#### addListener

    public void addListener(FlowStepListener flowStepListener)

Description copied from interface: `FlowStep`
Method addListener registers the given `FlowStepListener` with this instance.

Specified by:
  `addListener` in interface `FlowStep<Config>`
Parameters:
  `flowStepListener` - of type flowStepListener

#### removeListener

    public boolean removeListener(FlowStepListener flowStepListener)

Description copied from interface: `FlowStep`
Method removeListener removes the given flowStepListener from this instance.

Specified by:
  `removeListener` in interface `FlowStep<Config>`
Parameters:
  `flowStepListener` - of type FlowStepListener
Returns:
  true if the listener was removed

#### fireOnCompleted

    protected void fireOnCompleted()

#### fireOnThrowable

    protected void fireOnThrowable(java.lang.Throwable throwable)

#### fireOnStopping

    protected void fireOnStopping()

#### fireOnStarting

    protected void fireOnStarting()

#### fireOnRunning

    protected void fireOnRunning()

#### createClientState

    protected ClientState createClientState(FlowProcess flowProcess)

#### getFlowStepJob

    public FlowStepJob<Config> getFlowStepJob()

#### getCreateFlowStepJob

    public FlowStepJob<Config> getCreateFlowStepJob(FlowProcess<Config> flowProcess,
                                           Config parentConfig)

#### createFlowStepJob

    protected abstract FlowStepJob createFlowStepJob(ClientState clientState,
                                FlowProcess<Config> flowProcess,
                                Config initializedStepConfig)

#### initConfFromNodeConfigDef

    protected void initConfFromNodeConfigDef(ElementGraph nodeElementGraph,
                                 ConfigDef.Setter setter)

#### initConfFromStepConfigDef

    protected void initConfFromStepConfigDef(ConfigDef.Setter setter)

#### addSources

    protected static void addSources(BaseFlowStep flowStep,
                  ElementGraph elementGraph,
                  java.util.Set<Tap> sources)

#### addSinks

    protected static void addSinks(BaseFlowStep flowStep,
                ElementGraph elementGraph,
                java.util.Set<Tap> sinks)

#### equals

    public boolean equals(java.lang.Object object)

Overrides:
  `equals` in class `java.lang.Object`

#### hashCode

    public int hashCode()

Overrides:
  `hashCode` in class `java.lang.Object`

#### toString

    public java.lang.String toString()

Overrides:
  `toString` in class `java.lang.Object`

#### isInfoEnabled

    public final boolean isInfoEnabled()

Specified by:
  `isInfoEnabled` in interface `ProcessLogger`

#### isDebugEnabled

    public final boolean isDebugEnabled()

Specified by:
  `isDebugEnabled` in interface `ProcessLogger`

#### logDebug

    public void logDebug(java.lang.String message,
                java.lang.Object... arguments)

Specified by:
  `logDebug` in interface `ProcessLogger`

#### logInfo

    public void logInfo(java.lang.String message,
               java.lang.Object... arguments)

Specified by:
  `logInfo` in interface `ProcessLogger`

#### logWarn

    public void logWarn(java.lang.String message)

Specified by:
  `logWarn` in interface `ProcessLogger`

#### logWarn

    public void logWarn(java.lang.String message,
               java.lang.Throwable throwable)

Specified by:
  `logWarn` in interface `ProcessLogger`

#### logWarn

    public void logWarn(java.lang.String message,
               java.lang.Object... arguments)

Specified by:
  `logWarn` in interface `ProcessLogger`

#### logError

    public void logError(java.lang.String message,
                java.lang.Object... arguments)

Specified by:
  `logError` in interface `ProcessLogger`

#### logError

    public void logError(java.lang.String message,
                java.lang.Throwable throwable)

Specified by:
  `logError` in interface `ProcessLogger`