예제 #1
0
  @Override
  public void handle(ContainerEvent event) {
    try {
      this.writeLock.lock();

      ContainerId containerID = event.getContainerID();
      LOG.debug("Processing " + containerID + " of type " + event.getType());

      ContainerState oldState = stateMachine.getCurrentState();
      ContainerState newState = null;
      try {
        newState = stateMachine.doTransition(event.getType(), event);
      } catch (InvalidStateTransitonException e) {
        LOG.warn(
            "Can't handle this event at current state: Current: ["
                + oldState
                + "], eventType: ["
                + event.getType()
                + "]",
            e);
      }
      if (oldState != newState) {
        LOG.info("Container " + containerID + " transitioned from " + oldState + " to " + newState);
      }
    } finally {
      this.writeLock.unlock();
    }
  }
 @Override
 public void handle(TaskEvent event) {
   if (LOG.isDebugEnabled()) {
     LOG.debug(
         "Processing TaskEvent "
             + event.getTaskID()
             + " of type "
             + event.getType()
             + " while in state "
             + getInternalState()
             + ". Event: "
             + event);
   }
   try {
     writeLock.lock();
     TaskStateInternal oldState = getInternalState();
     try {
       stateMachine.doTransition(event.getType(), event);
     } catch (InvalidStateTransitonException e) {
       LOG.error("Can't handle this event at current state for " + this.taskId, e);
       internalError(event.getType());
     }
     if (oldState != getInternalState()) {
       LOG.info(taskId + " Task Transitioned from " + oldState + " to " + getInternalState());
     }
   } finally {
     writeLock.unlock();
   }
 }