in taverna-server-worker/src/main/java/org/apache/taverna/server/localworker/impl/WorkerCore.java [512:551]
public void killWorker() {
if (!finished && subprocess != null) {
final Holder<Integer> code = new Holder<>();
for (TimingOutTask tot : new TimingOutTask[] { new TimingOutTask() {
/** Check if the workflow terminated of its own accord */
@Override
public void doIt() throws IOException {
code.value = subprocess.exitValue();
accounting.runCeased();
buildUR(code.value == 0 ? Completed : Failed, code.value);
}
}, new TimingOutTask() {
/** Tell the workflow to stop */
@Override
public void doIt() throws IOException {
code.value = killNicely();
accounting.runCeased();
buildUR(code.value == 0 ? Completed : Aborted, code.value);
}
}, new TimingOutTask() {
/** Kill the workflow, kill it with fire */
@Override
public void doIt() throws IOException {
code.value = killHard();
accounting.runCeased();
buildUR(code.value == 0 ? Completed : Aborted, code.value);
}
} }) {
try {
tot.doOrTimeOut(DEATH_TIME);
} catch (Exception e) {
}
if (code.value != null)
break;
}
finished = true;
setExitCode(code.value);
readyToSendEmail = true;
}
}