public Optional<SingularityTaskIdHistory> getByRunId(String requestId, String runId) { for (SingularityTaskIdHistory history : getFromZk(Collections.singletonList(requestId))) { if (history.getRunId().isPresent() && history.getRunId().get().equals(runId)) { return Optional.of(history); } } Optional<SingularityTaskHistory> history = historyManager.getTaskHistoryByRunId(requestId, runId); if (history.isPresent()) { return Optional.of(SingularityTaskIdHistory.fromTaskIdAndTaskAndUpdates(history.get().getTask().getTaskId(), history.get().getTask(), history.get().getTaskUpdates())); } return Optional.absent(); }
@Override public void sendTaskCompletedMail(SingularityTaskHistory taskHistory, SingularityRequest request) { final Optional<SingularityTaskHistoryUpdate> lastUpdate = taskHistory.getLastTaskUpdate(); if (!lastUpdate.isPresent()) { LOG.warn("Can't send task completed mail for task {} - no last update", taskHistory.getTask().getTaskId()); return; } final Optional<SingularityEmailType> emailType = getEmailType(lastUpdate.get().getTaskState(), request, taskHistory.getTaskUpdates()); if (!emailType.isPresent()) { LOG.debug("No configured emailType for {} and {}", request, lastUpdate.get().getTaskState()); return; } prepareTaskMail(Optional.of(taskHistory.getTask()), taskHistory.getTask().getTaskId(), request, emailType.get(), Collections.<String, Object> emptyMap(), taskHistory.getTaskUpdates(), lastUpdate.get().getTaskState(), taskHistory.getTaskMetadata()); }
private SingularityTaskHistory buildTask(long launchTime) { SingularityTask task = prepTask(request, firstDeploy, launchTime, 1); return new SingularityTaskHistory(null, Optional.<String> absent(), Optional.<String>absent(), null, task, null, null, null); }
public static SingularityTaskState fromTaskHistory(SingularityTaskHistory taskHistory) { return new SingularityTaskState( Optional.of(taskHistory.getTask().getTaskId()), Optional.of(taskHistory.getTask().getTaskRequest().getPendingTask().getPendingTaskId()), taskHistory.getTask().getTaskRequest().getPendingTask().getRunId(), Optional.of(taskHistory.getLastTaskUpdate().get().getTaskState()), taskHistory.getTaskUpdates(), false ); }
public Optional<SingularityTask> getTask(SingularityTaskId taskId) { Optional<SingularityTask> maybeTask = taskManager.getTask(taskId); if (maybeTask.isPresent()) { return maybeTask; } Optional<SingularityTaskHistory> history = historyManager.getTaskHistory(taskId.getId()); if (history.isPresent()) { return Optional.of(history.get().getTask()); } return Optional.absent(); }
final String slaveHostname = history.getTask().getHostname(); final String fullPath = new File(history.getDirectory().get(), path).toString();
@Override protected boolean moveToHistory(SingularityTaskId object) { final Optional<SingularityTaskHistory> taskHistory = taskManager.getTaskHistory(object); if (taskHistory.isPresent()) { if (!taskHistory.get().getTaskUpdates().isEmpty()) { final long lastUpdateAt = taskHistory.get().getLastTaskUpdate().get().getTimestamp(); final long timeSinceLastUpdate = System.currentTimeMillis() - lastUpdateAt; if (timeSinceLastUpdate < taskMetadataConfiguration.getTaskPersistAfterFinishBufferMillis()) { LOG.debug("Not persisting {} yet - lastUpdate only happened {} ago, buffer {}", JavaUtils.durationFromMillis(timeSinceLastUpdate), JavaUtils.durationFromMillis(taskMetadataConfiguration.getTaskPersistAfterFinishBufferMillis())); return false; } } LOG.debug("Moving {} to history", object); try { historyManager.saveTaskHistory(taskHistory.get()); } catch (Throwable t) { LOG.warn("Failed to persist task into History for task {}", object, t); return false; } } else { LOG.warn("Inactive task {} did not have a task to persist", object); } return true; }
private Optional<SingularityTaskState> getTaskStateFromId(SingularityTaskId singularityTaskId) { Optional<SingularityTaskHistory> maybeTaskHistory = taskManager.getTaskHistory(singularityTaskId).or(historyManager.getTaskHistory(singularityTaskId.toString())); if (maybeTaskHistory.isPresent() && maybeTaskHistory.get().getLastTaskUpdate().isPresent()) { return Optional.of(SingularityTaskState.fromTaskHistory(maybeTaskHistory.get())); } else { return Optional.absent(); } } }
for (SingularityTaskMetadata taskMetadata : taskHistory.get().getTaskMetadata()) { if (taskMetadata.getType().equals(taskMetadataConfiguration.getSendTaskCompletedMailOnceMetadataTypeIsAvailable().get())) { LOG.debug("Sending task finished email for {} because metadata type {} is present", taskId, Optional<SingularityTaskHistoryUpdate> lastUpdate = taskHistory.get().getLastTaskUpdate();
@JsonIgnore public Optional<SingularityTaskHistoryUpdate> getLastTaskUpdate() { return JavaUtils.getLast(getTaskUpdates()); }
private SingularityTaskHistory checkHistory(String taskId, SingularityUser user) { final SingularityTaskId taskIdObj = getTaskIdObject(taskId); final SingularityTaskHistory taskHistory = getTaskHistoryRequired(taskIdObj, user); if (!taskHistory.getDirectory().isPresent()) { logSupport.checkDirectoryAndContainerId(taskIdObj); throw badRequest("Task %s does not have a directory yet - check again soon (enqueued request to refetch)", taskId); } return taskHistory; }
.build()); assertEquals(true, taskManager.getTaskHistory(task.getTaskId()).get().getShellCommandHistory().get(1).getShellUpdates().get(0).getUpdateType() == UpdateType.STARTED);
private Optional<String> getRequestGroupForTask(final SingularityTaskId taskId, SingularityUser user) { Optional<SingularityTaskHistory> maybeTaskHistory = getTaskHistory(taskId, user); if (maybeTaskHistory.isPresent()) { SingularityRequest request = maybeTaskHistory.get().getTask().getTaskRequest().getRequest(); authorizationHelper.checkForAuthorization(request, user, SingularityAuthorizationScope.READ); return request.getGroup(); } else { return getRequestGroup(taskId.getRequestId(), user); } }
final SingularityTaskHistory history = checkHistory(taskId, user); final String slaveHostname = history.getTask().getHostname(); final String pathToRoot = history.getDirectory().get(); final String fullPath = new File(pathToRoot, currentDirectory).toString();
@Override protected boolean moveToHistory(SingularityTaskId object) { final Optional<SingularityTaskHistory> taskHistory = taskManager.getTaskHistory(object); if (taskHistory.isPresent()) { if (!taskHistory.get().getTaskUpdates().isEmpty()) { final long lastUpdateAt = taskHistory.get().getLastTaskUpdate().get().getTimestamp(); final long timeSinceLastUpdate = System.currentTimeMillis() - lastUpdateAt; if (timeSinceLastUpdate < taskMetadataConfiguration.getTaskPersistAfterFinishBufferMillis()) { LOG.debug("Not persisting {} yet - lastUpdate only happened {} ago, buffer {}", JavaUtils.durationFromMillis(timeSinceLastUpdate), JavaUtils.durationFromMillis(taskMetadataConfiguration.getTaskPersistAfterFinishBufferMillis())); return false; } } LOG.debug("Moving {} to history", object); try { historyManager.saveTaskHistory(taskHistory.get()); } catch (Throwable t) { LOG.warn("Failed to persist task into History for task {}", object, t); return false; } } else { LOG.warn("Inactive task {} did not have a task to persist", object); } return true; }
Assert.assertEquals(ExtendedTaskState.TASK_KILLED, taskManager.getTaskHistory(lowPriorityTask.getTaskId()).get().getLastTaskUpdate().get().getTaskState()); Assert.assertEquals(ExtendedTaskState.TASK_RUNNING, taskManager.getTaskHistory(mediumPriorityTask.getTaskId()).get().getLastTaskUpdate().get().getTaskState()); Assert.assertEquals(ExtendedTaskState.TASK_RUNNING, taskManager.getTaskHistory(highPriorityTask.getTaskId()).get().getLastTaskUpdate().get().getTaskState());
for (SingularityTaskMetadata taskMetadata : taskHistory.get().getTaskMetadata()) { if (taskMetadata.getType().equals(taskMetadataConfiguration.getSendTaskCompletedMailOnceMetadataTypeIsAvailable().get())) { LOG.debug("Sending task finished email for {} because metadata type {} is present", taskId, Optional<SingularityTaskHistoryUpdate> lastUpdate = taskHistory.get().getLastTaskUpdate();
private long getTaskRunningStartTime(SingularityTaskId task) { Optional<SingularityTaskHistory> taskHistory = taskManager.getTaskHistory(task); if (taskHistory.isPresent()) { java.util.Optional<SingularityTaskHistoryUpdate> taskRunningState = taskHistory.get().getTaskUpdates().stream().filter(h -> h.getTaskState().equals(ExtendedTaskState.TASK_RUNNING)).findFirst(); if (taskRunningState.isPresent()) { return taskRunningState.get().getTimestamp(); } LOG.error("Could not find time when task {} reached TASK_RUNNING state", task); } else { LOG.error("Could not find task history for {}", task); } return System.currentTimeMillis(); }
private SingularityTaskHistory checkHistory(String taskId, SingularityUser user) { final SingularityTaskId taskIdObj = getTaskIdObject(taskId); final SingularityTaskHistory taskHistory = getTaskHistoryRequired(taskIdObj, user); if (!taskHistory.getDirectory().isPresent()) { logSupport.checkDirectoryAndContainerId(taskIdObj); throw badRequest("Task %s does not have a directory yet - check again soon (enqueued request to refetch)", taskId); } return taskHistory; }
.build()); assertEquals(true, taskManager.getTaskHistory(task.getTaskId()).get().getShellCommandHistory().get(1).getShellUpdates().get(0).getUpdateType() == UpdateType.STARTED);