azkaban源码解读工作流状态Status(一)

工作流Status状态枚举:

  • READY
  • PREPARIN 
  • RUNNING
  • PAUSED
  •  SUCCEEDED
  •  KILLED
  •  FAILED
  •  FAILED_FINISHING
  •  SKIPPED
  •  DISABLED
  •  QUEUED
  •  FAILED_SUCCEEDED
  •  CANCELLED

其中,绿色代表完成态;红色代表运行态。

BlockingStatus——一种阻塞在非完成态的状态封装类

public Status blockOnFinishedStatus() {
    if (status == null) {
      return null;
    }
    //如果当前job状态为非完成态,则一直阻塞
    while (!Status.isStatusFinished(status)) {
      synchronized (this) {
        try {
          this.wait(WAIT_TIME);
        } catch (InterruptedException e) {
        }
      }
    }

    return status;
}
//释放锁,唤醒一个等待者
public void unblock() {
    synchronized (this) {
      this.notifyAll();
    }
  }
public void changeStatus(Status status) {
    synchronized (this) {
      this.status = status;
      if (Status.isStatusFinished(status)) {
        unblock();
      }
    }
  }

猜你喜欢

转载自eomseoms.iteye.com/blog/2234223
今日推荐