token.lock(lockOwnerId);
action.execute(executionContext);
} finally {
token.unlock(lockOwnerId);
}
} catch (Exception exception) {
// NOTE that Error's are not caught because that might halt the JVM and mask the original Error.
log.error("action threw exception: "+exception.getMessage(), exception);