[ 
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)

Reply via email to