public class SliderAppMaster extends AbstractSliderLaunchedService implements org.apache.hadoop.yarn.client.api.async.AMRMClientAsync.CallbackHandler, org.apache.hadoop.yarn.client.api.async.NMClientAsync.CallbackHandler, RunService, SliderExitCodes, SliderKeys, org.apache.hadoop.service.ServiceStateChangeListener, RoleKeys, ProviderCompleted, AppMasterActionOperations
| Modifier and Type | Field and Description |
|---|---|
protected Map<org.apache.hadoop.yarn.api.records.ApplicationAccessType,String> |
applicationACLs
App ACLs
|
static String |
E_TRIGGERED_LAUNCH_FAILURE
Error string on chaos monkey launch failure action: "Chaos monkey triggered launch failure"
|
static int |
HEARTBEAT_INTERVAL |
protected static org.slf4j.Logger |
log |
protected static org.slf4j.Logger |
LOG_YARN
log for YARN events
|
com.codahale.metrics.MetricRegistry |
metrics
metrics registry
|
org.apache.hadoop.yarn.client.api.async.NMClientAsync |
nmClientAsync
Handle to communicate with the Node Manager
|
static int |
NUM_RPC_HANDLERS |
static String |
SERVICE_CLASSNAME |
static String |
SERVICE_CLASSNAME_SHORT |
_EXIT_CODE_BASE, EXIT_APPLICATION_IN_USE, EXIT_BAD_CONFIGURATION, EXIT_BAD_STATE, EXIT_DEPLOYMENT_FAILED, EXIT_INSTANCE_EXISTS, EXIT_PROCESS_FAILED, EXIT_TIMED_OUT, EXIT_UNKNOWN_INSTANCE, EXIT_YARN_SERVICE_FAILED, EXIT_YARN_SERVICE_FINISHED_WITH_ERROR, EXIT_YARN_SERVICE_KILLEDEXIT_CLIENT_INITIATED_SHUTDOWN, EXIT_COMMAND_ARGUMENT_ERROR, EXIT_CONFLICT, EXIT_CONNECTIVITY_PROBLEM, EXIT_EXCEPTION_THROWN, EXIT_FALSE, EXIT_FORBIDDEN, EXIT_FOUND, EXIT_INTERNAL_ERROR, EXIT_INTERRUPTED, EXIT_MOVED, EXIT_NOT_ACCEPTABLE, EXIT_NOT_FOUND, EXIT_NOT_MODIFIED, EXIT_OPERATION_NOT_ALLOWED, EXIT_OTHER_FAILURE, EXIT_SERVICE_UNAVAILABLE, EXIT_SUCCESS, EXIT_TASK_LAUNCH_FAILURE, EXIT_UNAUTHORIZE, EXIT_UNIMPLEMENTED, EXIT_UNSUPPORTED_VERSION, EXIT_USAGEADDONS_DIR, AGENT_TAR, AM_DIR_PREFIX, AM_FILTER_NAME, APP_CONTAINER_HEARTBEAT_INTERVAL_SEC, APP_CONTAINER_RELEASE_TIMEOUT, APP_DEF_DIR, APP_TYPE, APP_VERSION, APP_VERSION_UNKNOWN, CLUSTER_DIRECTORY, COMP_KEYSTORE_PASSWORD_ALIAS_DEFAULT, COMP_KEYSTORE_PASSWORD_ALIAS_KEY, COMP_KEYSTORE_PASSWORD_PROPERTY_KEY, COMP_STORES_REQUIRED_KEY, COMP_TRUSTSTORE_PASSWORD_ALIAS_DEFAULT, COMP_TRUSTSTORE_PASSWORD_ALIAS_KEY, COMP_TRUSTSTORE_PASSWORD_PROPERTY_KEY, COMPONENT_AM, CRT_FILE_NAME, CRT_PASS_FILE_NAME, CSR_FILE_NAME, DATA_DIR_NAME, DEFAULT_APP_PKG, DEFAULT_GC_OPTS, DEFAULT_JVM_HEAP, DEFAULT_YARN_MEMORY, GENERATED_CONF_DIR_NAME, GSON_JAR, HADOOP_PROXY_USER, HADOOP_USER_NAME, HDP_VERSION_PROP_NAME, HISTORY_DIR_NAME, HISTORY_FILENAME_CREATION_PATTERN, HISTORY_FILENAME_GLOB_PATTERN, HISTORY_FILENAME_MATCH_PATTERN, HISTORY_FILENAME_PREFIX, HISTORY_FILENAME_SUFFIX, INFRA_DIR_NAME, JCOMMANDER_JAR, JVM_ENABLE_ASSERTIONS, JVM_ENABLE_SYSTEM_ASSERTIONS, JVM_FORCE_IPV4, JVM_JAVA_HEADLESS, KEY_ALLOWED_PORT_RANGE, KEY_AM_ALLOWED_PORT_RANGE, KEY_FILE_NAME, KEYSTORE_FILE_NAME, KEYTAB_DIR, LOCAL_TARBALL_INSTALL_SUBDIR, LOG4J_PROP_FILENAME, LOG4J_SERVER_PROP_FILENAME, PACKAGE_DIRECTORY, PASS_LEN, PROPAGATE_RESOURCE_OPTION, PROPAGATED_CONF_DIR_NAME, PROPERTY_CONF_DIR, PROPERTY_LIB_DIR, PYTHONPATH, ROLE_AM_PRIORITY_INDEX, SECURITY_DIR, SLIDER_BASE_DIRECTORY, SLIDER_CLASSPATH_EXTRA, SLIDER_CLIENT_XML, SLIDER_DEPENDENCY_DIR, SLIDER_DEPENDENCY_DIR_PERMISSIONS, SLIDER_DEPENDENCY_HDP_PARENT_DIR, SLIDER_DEPENDENCY_LOCALIZED_DIR_LINK, SLIDER_DEPENDENCY_TAR_GZ_FILE_EXT, SLIDER_DEPENDENCY_TAR_GZ_FILE_NAME, SLIDER_JAR, SLIDER_JVM_OPTS, SLIDER_PASSPHRASE, SLIDER_SERVER_XML, SLIDER_XML, SNAPSHOT_CONF_DIR_NAME, STDERR_AM, STDOUT_AM, SUBMITTED_CONF_DIR, SYSPROP_LOG_DIR, SYSPROP_LOG4J_CONFIGURATION, TMP_DIR_PREFIX, TMP_LOGDIR_PREFIX, YARN_CONTAINER_PATHCLUSTER_DIRECTORY_PERMISSIONS, DATA_DIRECTORY_PERMISSIONS, DEFAULT_CLUSTER_DIRECTORY_PERMISSIONS, DEFAULT_DATA_DIRECTORY_PERMISSIONS, DEFAULT_YARN_QUEUE, DEFAULT_YARN_QUEUE_PRIORITY, DFS_DATANODE_KERBEROS_PRINCIPAL_KEY, DFS_NAMENODE_DELEGATION_KEY_UPDATE_INTERVAL_DEFAULT, DFS_NAMENODE_DELEGATION_KEY_UPDATE_INTERVAL_KEY, DFS_NAMENODE_DELEGATION_TOKEN_ALWAYS_USE_DEFAULT, DFS_NAMENODE_DELEGATION_TOKEN_ALWAYS_USE_KEY, DFS_NAMENODE_DELEGATION_TOKEN_MAX_LIFETIME_DEFAULT, DFS_NAMENODE_DELEGATION_TOKEN_MAX_LIFETIME_KEY, DFS_NAMENODE_DELEGATION_TOKEN_RENEW_INTERVAL_DEFAULT, DFS_NAMENODE_DELEGATION_TOKEN_RENEW_INTERVAL_KEY, DFS_NAMENODE_DU_RESERVED_KEY, DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY, DFS_NAMENODE_KEYTAB_FILE_KEY, FS_DEFAULT_NAME_CLASSIC, HADOOP_HTTP_FILTER_INITIALIZERS, IPC_CLIENT_FALLBACK_TO_SIMPLE_AUTH, IPC_CLIENT_RETRY_POLICY_ENABLED_DEFAULT, IPC_CLIENT_RETRY_POLICY_SPEC_DEFAULT, KEY_AM_KEYTAB_LOCAL_PATH, KEY_AM_LAUNCH_ENV, KEY_AM_LOGIN_KEYTAB_NAME, KEY_AM_LOGIN_KEYTAB_REQUIRED, KEY_AM_RESTART_LIMIT, KEY_HDFS_KEYTAB_DIR, KEY_IPC_CLIENT_RETRY_POLICY_ENABLED, KEY_IPC_CLIENT_RETRY_POLICY_SPEC, KEY_KERBEROS_PRINCIPAL, KEY_KEYSTORE_LOCATION, KEY_KEYTAB_PRINCIPAL, KEY_PROTOCOL_ACL, KEY_PROVIDER, KEY_SECURITY_ENABLED, KEY_SLIDER_AM_DEPENDENCY_CHECKS_DISABLED, KEY_SLIDER_BASE_PATH, KEY_TEMPLATE_ORIGIN, KEY_YARN_QUEUE, KEY_YARN_QUEUE_PRIORITY, PREFIX_PROVIDER, PYTHON_EXECUTABLE_PATH, REGISTRY_PATH, REGISTRY_ZK_QUORUM, X_DEV_INSECURE_DEFAULT, X_DEV_INSECURE_REQUIRED, X_DEV_INSECURE_WSENV_PREFIX, GC_OPTS, JVM_HEAP, JVM_OPTS, ROLE_ACTUAL_INSTANCES, ROLE_ADDITIONAL_ARGS, ROLE_FAILED_INSTANCES, ROLE_FAILED_RECENTLY_INSTANCES, ROLE_FAILED_STARTING_INSTANCES, ROLE_NAME, ROLE_NODE_FAILED_INSTANCES, ROLE_PENDING_AA_INSTANCES, ROLE_PREEMPTED_INSTANCES, ROLE_RELEASING_INSTANCES, ROLE_REQUESTED_INSTANCES| Constructor and Description |
|---|
SliderAppMaster()
Service Constructor
|
| Modifier and Type | Method and Description |
|---|---|
void |
addContainerRequest(org.apache.hadoop.yarn.client.api.AMRMClient.ContainerRequest req)
Issue a container request
|
org.apache.hadoop.conf.Configuration |
bindArgs(org.apache.hadoop.conf.Configuration config,
String... args)
pick up the args from the service launcher
|
int |
cancelContainerRequests(org.apache.hadoop.yarn.api.records.Priority priority1,
org.apache.hadoop.yarn.api.records.Priority priority2,
int count)
Remove a container request
|
void |
cancelSingleRequest(org.apache.hadoop.yarn.client.api.AMRMClient.ContainerRequest request)
Cancel a specific request
|
void |
escalateOutstandingRequests()
Escalate operation as triggered by external timer.
|
void |
eventCallbackEvent(Object parameter) |
void |
execute(List<AbstractRMOperation> operations)
Execute an entire list of operations
|
void |
executeNodeReview(String reason)
Look at where the current node state is -and whether it should be changed
|
void |
flexCluster(ConfTree resources)
Implementation of cluster flexing.
|
AppState |
getAppState()
Get the application state
|
ClusterDescription |
getClusterDescription()
This is the status, the live model
|
SliderFileSystem |
getClusterFS()
Get the filesystem of this cluster
|
String |
getGeneratedConfDir()
Get the path to the DFS configuration that is defined in the cluster specification
|
MapOperations |
getGlobalInternalOptions()
Get the global internal options for the AM
|
AggregateConf |
getInstanceDefinition() |
File |
getLocalConfDir()
Build the configuration directory passed in or of the target FS
|
static org.slf4j.Logger |
getLog()
Get the AM log
|
float |
getProgress()
heartbeat operation; return the ratio of requested
to actual
|
ProviderService |
getProviderService() |
Object |
getProxy(Class protocol,
InetSocketAddress addr) |
void |
handleReviewAndFlexApplicationSize(ReviewAndFlexApplicationSize action)
Handle the event requesting a review ...
|
org.apache.hadoop.service.Service |
initAndAddService(org.apache.hadoop.service.Service service)
Initialize a newly created service then add it.
|
protected void |
launchProviderService(AggregateConf instanceDefinition,
File confDir)
Launch the provider service
|
protected void |
login(String principal,
File localKeytabFile) |
static void |
main(String[] args)
This is the main entry point for the service launcher.
|
void |
onAMStop(ActionStopSlider stopActionRequest)
Signal that the AM is complete
|
void |
onContainersAllocated(List<org.apache.hadoop.yarn.api.records.Container> allocatedContainers)
Callback event when a container is allocated.
|
void |
onContainersCompleted(List<org.apache.hadoop.yarn.api.records.ContainerStatus> completedContainers) |
void |
onContainerStarted(org.apache.hadoop.yarn.api.records.ContainerId containerId,
Map<String,ByteBuffer> allServiceResponse) |
void |
onContainerStatusReceived(org.apache.hadoop.yarn.api.records.ContainerId containerId,
org.apache.hadoop.yarn.api.records.ContainerStatus containerStatus) |
void |
onContainerStopped(org.apache.hadoop.yarn.api.records.ContainerId containerId) |
void |
onError(Throwable e) |
void |
onExceptionInThread(Thread thread,
Throwable exception)
Handle any exception in a thread.
|
void |
onGetContainerStatusError(org.apache.hadoop.yarn.api.records.ContainerId containerId,
Throwable t) |
void |
onNodesUpdated(List<org.apache.hadoop.yarn.api.records.NodeReport> updatedNodes)
Monitored nodes have been changed
|
void |
onShutdownRequest()
RM wants to shut down the AM
|
void |
onStartContainerError(org.apache.hadoop.yarn.api.records.ContainerId containerId,
Throwable t) |
void |
onStopContainerError(org.apache.hadoop.yarn.api.records.ContainerId containerId,
Throwable t) |
void |
onUpgradeContainers(ActionUpgradeContainers upgradeContainersRequest)
Signal that containers are being upgraded.
|
void |
providerLostContainer(org.apache.hadoop.yarn.api.records.ContainerId containerId)
report container loss.
|
void |
queue(AsyncAction action)
Queue an action for immediate execution in the executor thread
|
boolean |
registerComponent(org.apache.hadoop.yarn.api.records.ContainerId id,
String description)
Handler for
action
Register/re-register an ephemeral container that is already in the app state |
void |
registerServiceInstance(String instanceName,
org.apache.hadoop.yarn.api.records.ApplicationId appId)
This registers the service instance and its external values
|
void |
releaseAssignedContainer(org.apache.hadoop.yarn.api.records.ContainerId containerId)
Release an assigned container
|
int |
runService()
this is called by service launcher; when it returns the application finishes
|
void |
schedule(AsyncAction action)
Schedule an action
|
void |
serviceInit(org.apache.hadoop.conf.Configuration conf) |
protected void |
serviceStart() |
protected void |
setupInitialRegistryPaths()
TODO: purge this once RM is doing the work
|
void |
signalAMComplete(ActionStopSlider stopActionRequest)
Signal that the AM is complete ..
|
void |
startContainer(org.apache.hadoop.yarn.api.records.Container container,
org.apache.hadoop.yarn.api.records.ContainerLaunchContext ctx,
RoleInstance instance)
Async start container request
|
void |
stateChanged(org.apache.hadoop.service.Service service)
Received on listening service termination.
|
protected Integer |
stopForkedProcess()
stop forked process if it the running process var is not null
|
void |
unregisterComponent(org.apache.hadoop.yarn.api.records.ContainerId id)
Handler for
UnregisterComponentInstance
unregister a component. |
protected void |
validateLoginUser(org.apache.hadoop.security.UserGroupInformation user)
Ensure that the user is generated from a keytab and has no HDFS delegation
tokens.
|
createRegistryOperationsInstance, lookupZKQuorum, require, requireArgumentSet, startRegistryOperationsServiceaddService, deployChildService, getArgv, isSet, isUnsetaddIfService, getServices, removeService, serviceStopclose, getBlockers, getConfig, getFailureCause, getFailureState, getLifecycleHistory, getName, getServiceState, getStartTime, init, isInState, noteFailure, putBlocker, registerGlobalListener, registerServiceListener, removeBlocker, setConfig, start, stop, toString, unregisterGlobalListener, unregisterServiceListener, waitForServiceToStopclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitclose, getBlockers, getConfig, getFailureCause, getFailureState, getLifecycleHistory, getName, getServiceState, getStartTime, init, isInState, registerServiceListener, start, stop, unregisterServiceListener, waitForServiceToStopgetServicesprotected static final org.slf4j.Logger log
protected static final org.slf4j.Logger LOG_YARN
public static final String SERVICE_CLASSNAME_SHORT
public static final String SERVICE_CLASSNAME
public static final int HEARTBEAT_INTERVAL
public static final int NUM_RPC_HANDLERS
public com.codahale.metrics.MetricRegistry metrics
public static final String E_TRIGGERED_LAUNCH_FAILURE
public org.apache.hadoop.yarn.client.api.async.NMClientAsync nmClientAsync
public void serviceInit(org.apache.hadoop.conf.Configuration conf)
throws Exception
serviceInit in class org.apache.hadoop.service.CompositeServiceExceptionprotected void serviceStart()
throws Exception
serviceStart in class org.apache.hadoop.service.CompositeServiceExceptionpublic org.apache.hadoop.conf.Configuration bindArgs(org.apache.hadoop.conf.Configuration config,
String... args)
throws Exception
bindArgs in interface RunServicebindArgs in class LaunchedWorkflowCompositeServiceconfig - configurationargs - argument listException - any problempublic int runService()
throws Throwable
runService in interface RunServicerunService in class LaunchedWorkflowCompositeServiceThrowablepublic org.apache.hadoop.service.Service initAndAddService(org.apache.hadoop.service.Service service)
service - the service to initprotected void login(String principal, File localKeytabFile) throws IOException, SliderException
IOExceptionSliderExceptionprotected void validateLoginUser(org.apache.hadoop.security.UserGroupInformation user)
throws SliderException
user - user to validateSliderExceptionpublic void registerServiceInstance(String instanceName, org.apache.hadoop.yarn.api.records.ApplicationId appId) throws IOException
instanceName - name of this instanceappId - application IDIOExceptionprotected void setupInitialRegistryPaths()
throws IOException
IOExceptionpublic boolean registerComponent(org.apache.hadoop.yarn.api.records.ContainerId id,
String description)
throws IOException
action
Register/re-register an ephemeral container that is already in the app stateid - the componentdescription - component descriptionIOExceptionpublic void unregisterComponent(org.apache.hadoop.yarn.api.records.ContainerId id)
UnregisterComponentInstance
unregister a component. At the time this message is received,
the component may not have been registeredid - the componentpublic File getLocalConfDir()
public String getGeneratedConfDir()
public MapOperations getGlobalInternalOptions()
public SliderFileSystem getClusterFS() throws IOException
IOExceptionpublic static org.slf4j.Logger getLog()
public AppState getAppState()
public void signalAMComplete(ActionStopSlider stopActionRequest)
stopActionRequest - request containing shutdown detailspublic void onAMStop(ActionStopSlider stopActionRequest)
stopActionRequest - request containing shutdown detailspublic Object getProxy(Class protocol, InetSocketAddress addr)
public void onContainersAllocated(List<org.apache.hadoop.yarn.api.records.Container> allocatedContainers)
onContainersAllocated in interface org.apache.hadoop.yarn.client.api.async.AMRMClientAsync.CallbackHandlerallocatedContainers - list of containers that are now ready to be
given work.public void onContainersCompleted(List<org.apache.hadoop.yarn.api.records.ContainerStatus> completedContainers)
onContainersCompleted in interface org.apache.hadoop.yarn.client.api.async.AMRMClientAsync.CallbackHandlerpublic void onUpgradeContainers(ActionUpgradeContainers upgradeContainersRequest) throws IOException, SliderException
upgradeContainersRequest - request containing upgrade detailsIOExceptionSliderExceptionpublic void flexCluster(ConfTree resources) throws IOException, SliderException
resources - the resource treeSliderException - slider problems, including invalid configsIOException - IO problemspublic void handleReviewAndFlexApplicationSize(ReviewAndFlexApplicationSize action) throws SliderInternalStateException
action - action triggering the event. It may be put
back into the queueSliderInternalStateExceptionpublic void executeNodeReview(String reason) throws SliderInternalStateException
SliderInternalStateExceptionpublic void escalateOutstandingRequests()
Get the list of new operations off the AM, then executest them.
public void onShutdownRequest()
onShutdownRequest in interface org.apache.hadoop.yarn.client.api.async.AMRMClientAsync.CallbackHandlerpublic void onNodesUpdated(List<org.apache.hadoop.yarn.api.records.NodeReport> updatedNodes)
onNodesUpdated in interface org.apache.hadoop.yarn.client.api.async.AMRMClientAsync.CallbackHandlerupdatedNodes - list of updated nodespublic float getProgress()
getProgress in interface org.apache.hadoop.yarn.client.api.async.AMRMClientAsync.CallbackHandlerpublic void onError(Throwable e)
onError in interface org.apache.hadoop.yarn.client.api.async.AMRMClientAsync.CallbackHandlerpublic void execute(List<AbstractRMOperation> operations)
RMOperationHandlerActionsexecute in interface RMOperationHandlerActionsoperations - opspublic void releaseAssignedContainer(org.apache.hadoop.yarn.api.records.ContainerId containerId)
RMOperationHandlerActionsreleaseAssignedContainer in interface RMOperationHandlerActionscontainerId - containerpublic void addContainerRequest(org.apache.hadoop.yarn.client.api.AMRMClient.ContainerRequest req)
RMOperationHandlerActionsaddContainerRequest in interface RMOperationHandlerActionspublic int cancelContainerRequests(org.apache.hadoop.yarn.api.records.Priority priority1,
org.apache.hadoop.yarn.api.records.Priority priority2,
int count)
RMOperationHandlerActionscancelContainerRequests in interface RMOperationHandlerActionspriority1 - priority to remove atpriority2 - second priority to targetcount - number to removepublic void cancelSingleRequest(org.apache.hadoop.yarn.client.api.AMRMClient.ContainerRequest request)
RMOperationHandlerActionscancelSingleRequest in interface RMOperationHandlerActionsrequest - request to cancelprotected void launchProviderService(AggregateConf instanceDefinition, File confDir) throws IOException, SliderException
instanceDefinition - definition of the serviceconfDir - directory of config dataIOExceptionSliderExceptionpublic void eventCallbackEvent(Object parameter)
eventCallbackEvent in interface ProviderCompletedpublic void providerLostContainer(org.apache.hadoop.yarn.api.records.ContainerId containerId)
throws SliderException
containerId - id of the container which has failedSliderExceptionpublic void stateChanged(org.apache.hadoop.service.Service service)
stateChanged in interface org.apache.hadoop.service.ServiceStateChangeListenerstateChanged in class WorkflowCompositeServiceservice - the service that has changed.protected Integer stopForkedProcess()
public void startContainer(org.apache.hadoop.yarn.api.records.Container container,
org.apache.hadoop.yarn.api.records.ContainerLaunchContext ctx,
RoleInstance instance)
throws IOException
container - containerctx - contextinstance - node detailsIOExceptionpublic void onContainerStopped(org.apache.hadoop.yarn.api.records.ContainerId containerId)
onContainerStopped in interface org.apache.hadoop.yarn.client.api.async.NMClientAsync.CallbackHandlerpublic void onContainerStarted(org.apache.hadoop.yarn.api.records.ContainerId containerId,
Map<String,ByteBuffer> allServiceResponse)
onContainerStarted in interface org.apache.hadoop.yarn.client.api.async.NMClientAsync.CallbackHandlerpublic void onStartContainerError(org.apache.hadoop.yarn.api.records.ContainerId containerId,
Throwable t)
onStartContainerError in interface org.apache.hadoop.yarn.client.api.async.NMClientAsync.CallbackHandlerpublic void onContainerStatusReceived(org.apache.hadoop.yarn.api.records.ContainerId containerId,
org.apache.hadoop.yarn.api.records.ContainerStatus containerStatus)
onContainerStatusReceived in interface org.apache.hadoop.yarn.client.api.async.NMClientAsync.CallbackHandlerpublic void onGetContainerStatusError(org.apache.hadoop.yarn.api.records.ContainerId containerId,
Throwable t)
onGetContainerStatusError in interface org.apache.hadoop.yarn.client.api.async.NMClientAsync.CallbackHandlerpublic void onStopContainerError(org.apache.hadoop.yarn.api.records.ContainerId containerId,
Throwable t)
onStopContainerError in interface org.apache.hadoop.yarn.client.api.async.NMClientAsync.CallbackHandlerpublic AggregateConf getInstanceDefinition()
public ClusterDescription getClusterDescription()
public ProviderService getProviderService()
public void queue(AsyncAction action)
action - action to executepublic void schedule(AsyncAction action)
action - for delayed executionpublic void onExceptionInThread(Thread thread, Throwable exception)
thread - thread throwing the exceptionexception - exceptionpublic static void main(String[] args)
args - command line arguments.Copyright © 2014–2015 The Apache Software Foundation. All rights reserved.