[
https://issues.apache.org/jira/browse/OOZIE-1778?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14026276#comment-14026276
]
Shwetha G S commented on OOZIE-1778:
------------------------------------
Isn't the issue because of asynchronous commands? For example, bundle
commands(operations) update bundle and queue coord commands. Any failures in
the corresponding coord commands can only be handled by recovery
services(recovery/status transit service). Failure handling of bundle command
will not work in this case as coord commands are just queued and the actual
execution happens later in another thread.
In case of synchronous commands, all updates(bundle and coord) are done in a
transaction. So no issue with status mismatches
Isn't this right or am I missing something here?
> Rollback option for XCommand
> ----------------------------
>
> Key: OOZIE-1778
> URL: https://issues.apache.org/jira/browse/OOZIE-1778
> Project: Oozie
> Issue Type: Bug
> Reporter: Purshotam Shah
>
> Currently if we issue a command at bundle level, which set the pending for
> bundle action and issue child command.
> If child command succeed, then it's all good. But if child command at
> pre-check or acquiring lock fails, then there is no way to update parent.
> In this scenario, bundle action and remain in pending and will cause
> unexpected behavior.
> We should do something like
> {code:java}
> XCommand.call() throws CommandException {
> try {
> eagerVerifyPrecondition();
> acquireLockCron.start();
> acquireLock();
> acquireLockCron.stop();
> loadState();
> verifyPrecondition();
> ret = execute();
> }
> catch(Throwable e){
> handleFailure();
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.2#6252)