You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@oozie.apache.org by "chenhaodan (Jira)" <ji...@apache.org> on 2023/03/14 13:23:00 UTC

[jira] [Created] (OOZIE-3715) Fix fork out more than one transitions submit , one transition submit fail can't execute KillXCommand

chenhaodan created OOZIE-3715:
---------------------------------

             Summary: Fix fork out more than one transitions submit , one transition submit fail can't execute KillXCommand
                 Key: OOZIE-3715
                 URL: https://issues.apache.org/jira/browse/OOZIE-3715
             Project: Oozie
          Issue Type: Bug
          Components: core
    Affects Versions: 5.2.1
            Reporter: chenhaodan
             Fix For: 5.2.1


When I fork 2 transitions( A and B) to submit , when A fail , B still Running , because can't execute KillXCommand.
ActionXCommand execute failJob and add KillXCommand to commandQueue , but the commandQueue is the new Bean ActionXCommand not the SignalXCommand , so can't execute KillXCommand. The code is as follows :
new ActionStartXCommand(context.getAction().getId(), null).failJob(context)public void failJob(ActionExecutor.Context context, WorkflowActionBean action) throws CommandException {        WorkflowJobBean workflow = (WorkflowJobBean) context.getWorkflow();        if (!handleUserRetry(context, action)) {            incrActionErrorCounter(action.getType(), "failed", 1);            LOG.warn("Failing Job due to failed action [\{0}]", action.getName());            try {                workflow.getWorkflowInstance().fail(action.getName());                WorkflowInstance wfInstance = workflow.getWorkflowInstance();
                ((LiteWorkflowInstance) wfInstance).setStatus(WorkflowInstance.Status.FAILED);                workflow.setWorkflowInstance(wfInstance);                workflow.setStatus(WorkflowJob.Status.FAILED);                action.setStatus(WorkflowAction.Status.FAILED);                action.resetPending();                queue(new WorkflowNotificationXCommand(workflow, action));                queue(new KillXCommand(workflow.getId()));                InstrumentUtils.incrJobCounter(INSTR_FAILED_JOBS_COUNTER_NAME, 1, getInstrumentation());
            }            catch (WorkflowException ex) {                throw new CommandException(ex);
            }
        }
    }



--
This message was sent by Atlassian Jira
(v8.20.10#820010)