Class JobExecutor
- java.lang.Object
-
- nl.esciencecenter.xenon.adaptors.schedulers.JobExecutor
-
- All Implemented Interfaces:
java.lang.Runnable
public class JobExecutor extends java.lang.Object implements java.lang.Runnable
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.String
adaptorName
private JobDescription
description
private boolean
done
private static java.lang.String
DONE_STATE
private XenonException
error
private static java.lang.String
ERROR_STATE
private java.lang.Integer
exitStatus
private InteractiveProcessFactory
factory
private FileSystem
filesystem
private boolean
hasRun
private boolean
interactive
private boolean
isRunning
private java.lang.String
jobIdentifier
private boolean
killed
private static java.lang.String
KILLED_STATE
private static long
MILLISECONDS_PER_MINUTE
Number of ms.private static java.lang.String
PENDING_STATE
private static long
POLLING_DELAY
Polling delay in ms.private long
pollingDelay
private static java.lang.String
RUNNING_STATE
private long
startupTimeout
private java.lang.String
state
private Streams
streams
private boolean
updateSignal
private Path
workingDirectory
-
Constructor Summary
Constructors Constructor Description JobExecutor(java.lang.String adaptorName, FileSystem filesystem, Path workingDirectory, InteractiveProcessFactory factory, JobDescription description, java.lang.String jobIdentifier, boolean interactive, long pollingDelay, long startupTimeout)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
clearUpdateRequest()
Clear the update signal and wake up any waiting threadsjava.lang.Exception
getError()
JobDescription
getJobDescription()
java.lang.String
getJobIdentifier()
private boolean
getKilled()
java.lang.String
getState()
JobStatus
getStatus()
Streams
getStreams()
boolean
hasRun()
boolean
isDone()
boolean
kill()
private Path
processPath(Path root, java.lang.String path)
void
run()
private void
setStreams(Streams streams)
private void
sleep(long maxDelay)
Sleep for a certain amount of time, provide the job is not done, and no one requested an update.private void
triggerStatusUpdate()
Signal the polling thread to produce a status update.private void
updateState(java.lang.String state, int exitStatus, XenonException e)
private void
waitForStatusUpdate(long maxDelay)
Wait for a certain amount of time for an update.JobStatus
waitUntilDone(long timeout)
JobStatus
waitUntilRunning(long timeout)
-
-
-
Field Detail
-
PENDING_STATE
private static final java.lang.String PENDING_STATE
- See Also:
- Constant Field Values
-
RUNNING_STATE
private static final java.lang.String RUNNING_STATE
- See Also:
- Constant Field Values
-
DONE_STATE
private static final java.lang.String DONE_STATE
- See Also:
- Constant Field Values
-
ERROR_STATE
private static final java.lang.String ERROR_STATE
- See Also:
- Constant Field Values
-
KILLED_STATE
private static final java.lang.String KILLED_STATE
- See Also:
- Constant Field Values
-
POLLING_DELAY
private static final long POLLING_DELAY
Polling delay in ms.- See Also:
- Constant Field Values
-
MILLISECONDS_PER_MINUTE
private static final long MILLISECONDS_PER_MINUTE
Number of ms. per min.- See Also:
- Constant Field Values
-
description
private final JobDescription description
-
jobIdentifier
private final java.lang.String jobIdentifier
-
interactive
private final boolean interactive
-
factory
private final InteractiveProcessFactory factory
-
pollingDelay
private final long pollingDelay
-
startupTimeout
private final long startupTimeout
-
adaptorName
private final java.lang.String adaptorName
-
filesystem
private final FileSystem filesystem
-
workingDirectory
private final Path workingDirectory
-
streams
private Streams streams
-
exitStatus
private java.lang.Integer exitStatus
-
updateSignal
private boolean updateSignal
-
isRunning
private boolean isRunning
-
killed
private boolean killed
-
done
private boolean done
-
hasRun
private boolean hasRun
-
state
private java.lang.String state
-
error
private XenonException error
-
-
Constructor Detail
-
JobExecutor
public JobExecutor(java.lang.String adaptorName, FileSystem filesystem, Path workingDirectory, InteractiveProcessFactory factory, JobDescription description, java.lang.String jobIdentifier, boolean interactive, long pollingDelay, long startupTimeout)
-
-
Method Detail
-
hasRun
public boolean hasRun()
-
kill
public boolean kill()
-
isDone
public boolean isDone()
-
getJobIdentifier
public java.lang.String getJobIdentifier()
-
getJobDescription
public JobDescription getJobDescription()
-
getStatus
public JobStatus getStatus()
-
getState
public java.lang.String getState()
-
getError
public java.lang.Exception getError()
-
updateState
private void updateState(java.lang.String state, int exitStatus, XenonException e)
-
getKilled
private boolean getKilled()
-
setStreams
private void setStreams(Streams streams)
-
getStreams
public Streams getStreams() throws XenonException
- Throws:
XenonException
-
waitUntilRunning
public JobStatus waitUntilRunning(long timeout)
-
waitUntilDone
public JobStatus waitUntilDone(long timeout)
-
triggerStatusUpdate
private void triggerStatusUpdate()
Signal the polling thread to produce a status update.
-
waitForStatusUpdate
private void waitForStatusUpdate(long maxDelay)
Wait for a certain amount of time for an update.- Parameters:
maxDelay
- the maximum time to wait
-
clearUpdateRequest
private void clearUpdateRequest()
Clear the update signal and wake up any waiting threads
-
sleep
private void sleep(long maxDelay)
Sleep for a certain amount of time, provide the job is not done, and no one requested an update.- Parameters:
maxDelay
- the maximum amount of time to wait
-
run
public void run()
- Specified by:
run
in interfacejava.lang.Runnable
-
-