示例#1
0
 @Override
 public TaskResult get(long timeout, TimeUnit unit)
     throws InterruptedException, ExecutionException, TimeoutException {
   if (!executionLock.await(timeout, unit)) {
     throw new TimeoutException(
         String.format(
             "Task '%s[%s]' hasn't completed", performer.retrieveName(), descriptor.getId()));
   }
   return result;
 }
示例#2
0
 /**
  * Устанавливает параметры завершения задачи
  *
  * @param results результат задачи
  * @param resultStatus статус завершения
  * @param exception исключения, которое произошло в процессе выполнения
  */
 private void endTask(
     Map<String, Object> results, TaskResultStatus resultStatus, Throwable exception) {
   writeLock.lock();
   try {
     result.setContent(results);
     result.setStatus(resultStatus);
     if (exception != null) {
       result.setErrorMessage(
           StringUtils.abbreviate(exception.getMessage(), TaskResult.ERROR_MESSAGE_MAX_SIZE - 3));
     }
     result.setEndDate(new Date());
     executionLock.countDown();
     changeState(null, TaskExecutionStatus.READY);
   } finally {
     writeLock.unlock();
   }
 }
示例#3
0
 @Override
 public TaskResult get() throws InterruptedException, ExecutionException {
   executionLock.await();
   return result;
 }