@Override public SingularityTaskIdHistory map(int index, ResultSet r, StatementContext ctx) throws SQLException { try { final SingularityTaskId taskId = singularityTaskIdTranscoder.fromString(r.getString("taskId")); final String lastTaskStatus = r.getString("lastTaskStatus"); Optional<ExtendedTaskState> lastTaskState = Optional.absent(); if (lastTaskStatus != null) { try { lastTaskState = Optional.of(ExtendedTaskState.valueOf(lastTaskStatus)); } catch (IllegalArgumentException e) { LOG.warn("Found invalid taskState {} in DB for task {}", lastTaskState, taskId, e); } } return new SingularityTaskIdHistory(taskId, r.getTimestamp("updatedAt").getTime(), lastTaskState, Optional.fromNullable(r.getString("runId"))); } catch (SingularityTranscoderException e) { throw new ResultSetException("Could not deserialize database result", e, ctx); } } }
public Optional<SingularityTaskIdHistory> getMostRecentTask(SingularityRequest request) { List<SingularityTaskId> activeTaskIds = taskManager.getActiveTaskIdsForRequest(request.getId()); if (!activeTaskIds.isEmpty()) { SingularityTaskId lastTaskId = activeTaskIds.get(0); List<SingularityTaskHistoryUpdate> historyUpdates = taskManager.getTaskHistoryUpdates(lastTaskId); if (!historyUpdates.isEmpty()) { SingularityTaskHistoryUpdate lastUpdate = historyUpdates.get(historyUpdates.size() - 1); return Optional.of(new SingularityTaskIdHistory( lastTaskId, lastUpdate.getTimestamp(), Optional.of(lastUpdate.getTaskState()), Optional.absent() // runId not currently provided here, grabbing the full task data for this is a more expensive call )); } } List<SingularityTaskIdHistory> maybeRecentTasks = taskHistoryHelper.getBlendedHistory(new SingularityTaskHistoryQuery(request.getId()), 0 , 1); if (!maybeRecentTasks.isEmpty()) { return Optional.of(maybeRecentTasks.get(0)); } return Optional.absent(); }
public static SingularityTaskIdHistory fromTaskIdAndTaskAndUpdates(SingularityTaskId taskId, SingularityTask task, List<SingularityTaskHistoryUpdate> updates) { ExtendedTaskState lastTaskState = null; long updatedAt = taskId.getStartedAt(); if (updates != null && !updates.isEmpty()) { SingularityTaskHistoryUpdate lastUpdate = Collections.max(updates); lastTaskState = lastUpdate.getTaskState(); updatedAt = lastUpdate.getTimestamp(); } return new SingularityTaskIdHistory(taskId, updatedAt, Optional.fromNullable(lastTaskState), task.getTaskRequest().getPendingTask().getRunId()); }
@Override public SingularityTaskIdHistory map(int index, ResultSet r, StatementContext ctx) throws SQLException { try { final SingularityTaskId taskId = singularityTaskIdTranscoder.fromString(r.getString("taskId")); final String lastTaskStatus = r.getString("lastTaskStatus"); Optional<ExtendedTaskState> lastTaskState = Optional.absent(); if (lastTaskStatus != null) { try { lastTaskState = Optional.of(ExtendedTaskState.valueOf(lastTaskStatus)); } catch (IllegalArgumentException e) { LOG.warn("Found invalid taskState {} in DB for task {}", lastTaskState, taskId, e); } } return new SingularityTaskIdHistory(taskId, r.getTimestamp("updatedAt").getTime(), lastTaskState, Optional.fromNullable(r.getString("runId"))); } catch (SingularityTranscoderException e) { throw new ResultSetException("Could not deserialize database result", e, ctx); } } }
public Optional<SingularityTaskIdHistory> getMostRecentTask(SingularityRequest request) { List<SingularityTaskId> activeTaskIds = taskManager.getActiveTaskIdsForRequest(request.getId()); if (!activeTaskIds.isEmpty()) { SingularityTaskId lastTaskId = activeTaskIds.get(0); List<SingularityTaskHistoryUpdate> historyUpdates = taskManager.getTaskHistoryUpdates(lastTaskId); if (!historyUpdates.isEmpty()) { SingularityTaskHistoryUpdate lastUpdate = historyUpdates.get(historyUpdates.size() - 1); return Optional.of(new SingularityTaskIdHistory( lastTaskId, lastUpdate.getTimestamp(), Optional.of(lastUpdate.getTaskState()), Optional.absent() // runId not currently provided here, grabbing the full task data for this is a more expensive call )); } } List<SingularityTaskIdHistory> maybeRecentTasks = taskHistoryHelper.getBlendedHistory(new SingularityTaskHistoryQuery(request.getId()), 0 , 1); if (!maybeRecentTasks.isEmpty()) { return Optional.of(maybeRecentTasks.get(0)); } return Optional.absent(); }