Search in sources :

Example 1 with Status

use of org.apache.oozie.client.Job.Status in project oozie by apache.

the class CoordStatusTransitXCommand method updateJobStatus.

@Override
protected void updateJobStatus(Status coordStatus) throws JPAExecutorException, CommandException {
    final Job.Status prevStatus = coordJob.getStatus();
    boolean prevPending = coordJob.isPending();
    if (isPending) {
        coordJob.setPending();
    } else {
        coordJob.resetPending();
    }
    boolean isPendingStateChanged = prevPending != coordJob.isPending();
    // Update the Coord Job
    if (coordJob.isTerminalStatus() && (coordStatus == Job.Status.SUSPENDED || coordStatus == Job.Status.SUSPENDEDWITHERROR)) {
        LOG.info("Coord Job [" + coordJob.getId() + "] status to " + coordStatus + " can not be updated as its already in Terminal state");
        if (isPendingStateChanged) {
            LOG.info("Pending for job  [" + coordJob.getId() + "] is changed to to '" + coordJob.isPending() + "' from '" + prevStatus + "'");
            coordJob.setLastModifiedTime(new Date());
            CoordJobQueryExecutor.getInstance().executeUpdate(CoordJobQuery.UPDATE_COORD_JOB_STATUS_PENDING_MODTIME, coordJob);
        }
        return;
    }
    // Check for backward support when RUNNINGWITHERROR, SUSPENDEDWITHERROR and PAUSEDWITHERROR is
    // not supported
    coordJob.setStatus(StatusUtils.getStatusIfBackwardSupportTrue(coordStatus));
    // Backward support when coordinator namespace is 0.1
    coordJob.setStatus(StatusUtils.getStatus(coordJob));
    if (coordJob.getStatus() != prevStatus || isPendingStateChanged) {
        LOG.info("Set coordinator job [" + coordJob.getId() + "] status to '" + coordJob.getStatus() + "' from '" + prevStatus + "'");
        coordJob.setLastModifiedTime(new Date());
        CoordJobQueryExecutor.getInstance().executeUpdate(CoordJobQuery.UPDATE_COORD_JOB_STATUS_PENDING_MODTIME, coordJob);
    }
    // update bundle action only when status changes in coord job
    if (coordJob.getBundleId() != null) {
        if (!prevStatus.equals(coordJob.getStatus())) {
            new BundleStatusUpdateXCommand(coordJob, prevStatus).call();
        }
    }
}
Also used : BundleStatusUpdateXCommand(org.apache.oozie.command.bundle.BundleStatusUpdateXCommand) Status(org.apache.oozie.client.Job.Status) Job(org.apache.oozie.client.Job) Date(java.util.Date)

Aggregations

Date (java.util.Date)1 Job (org.apache.oozie.client.Job)1 Status (org.apache.oozie.client.Job.Status)1 BundleStatusUpdateXCommand (org.apache.oozie.command.bundle.BundleStatusUpdateXCommand)1