in src/main/java/com/amazonaws/services/simpleworkflow/flow/core/TryCatchFinallyContext.java [210:251]
private void updateState() {
if (state == State.CLOSED || !executed) {
return;
}
if (nonDaemonHeirsCount == 0) {
if (heirs.isEmpty()) {
if (state == State.TRYING) {
if (failure == null) {
state = State.FINALIZING;
execute();
}
else {
state = State.CATCHING;
execute();
}
}
else if (state == State.CATCHING) {
state = State.FINALIZING;
execute();
}
else if (state == State.FINALIZING) {
assert state != State.CLOSED;
state = State.CLOSED;
if (failure == null) {
parent.remove(this);
}
else {
parent.fail(this, failure);
}
}
else {
throw new IllegalStateException("Unknown state " + state);
}
}
else {
if (failure == null) {
daemondCausedCancellation = true;
}
cancelHeirs();
}
}
}