@Override public int compare(SingularityTaskIdHistory o1, SingularityTaskIdHistory o2) { ComparisonChain chain = ComparisonChain.start(); if (localOrderDirection == OrderDirection.ASC) { chain = chain.compare(o1.getTaskId().getStartedAt(), o2.getTaskId().getStartedAt()); } else { chain = chain.compare(o2.getTaskId().getStartedAt(), o1.getTaskId().getStartedAt()); } return chain.compare(o1.getTaskId().getRequestId(), o2.getTaskId().getRequestId()).result(); }
@Override public int compareTo(SingularityTaskIdHistory o) { return ComparisonChain.start() .compare(o.getUpdatedAt(), updatedAt) .compare(taskId.getId(), o.getTaskId().getId()) .result(); }
@Override public boolean apply(SingularityTaskIdHistory input) { final SingularityTaskId taskId = input.getTaskId();
@GET @Path("/request/{requestId}/command-line-args") @Operation(summary = "Get a list of recently used command line args for an on-demand or scheduled request") public Set<List<String>> getRecentCommandLineArgs( @Parameter(hidden = true) @Auth SingularityUser user, @Parameter(required = true, description = "Request ID to look up") @PathParam("requestId") String requestId, @Parameter(description = "Max number of recent args to return") @QueryParam("count") Optional<Integer> count) { authorizationHelper.checkForAuthorizationByRequestId(requestId, user, SingularityAuthorizationScope.READ); final int argCount = count.or(DEFAULT_ARGS_HISTORY_COUNT); List<SingularityTaskIdHistory> historiesToCheck = taskHistoryHelper.getBlendedHistory(new SingularityTaskHistoryQuery( Optional.of(requestId), Optional.<String>absent(), Optional.<String>absent(), Optional.<String>absent(), Optional.<ExtendedTaskState>absent(), Optional.<Long>absent(), Optional.<Long>absent(), Optional.<Long>absent(), Optional.<Long>absent(), Optional.<OrderDirection>absent()), 0, argCount); Collections.sort(historiesToCheck); Set<List<String>> args = new HashSet<>(); for (SingularityTaskIdHistory taskIdHistory : historiesToCheck) { Optional<SingularityTask> maybeTask = taskHistoryHelper.getTask(taskIdHistory.getTaskId()); if (maybeTask.isPresent() && maybeTask.get().getTaskRequest().getPendingTask().getCmdLineArgsList().isPresent()) { List<String> taskArgs = maybeTask.get().getTaskRequest().getPendingTask().getCmdLineArgsList().get(); if (!taskArgs.isEmpty()) { args.add(maybeTask.get().getTaskRequest().getPendingTask().getCmdLineArgsList().get()); } } } return args; }
@Override public void saveTaskHistory(SingularityTaskHistory taskHistory) { if (history.getTaskHistoryForTask(taskHistory.getTask().getTaskId().getId()) != null) { if (LOG.isTraceEnabled()) { LOG.trace("saveTaskHistory -- existing taskHistory {}", taskHistory); } return; } SingularityTaskIdHistory taskIdHistory = SingularityTaskIdHistory.fromTaskIdAndTaskAndUpdates(taskHistory.getTask().getTaskId(), taskHistory.getTask(), taskHistory.getTaskUpdates()); String lastTaskStatus = null; if (taskIdHistory.getLastTaskState().isPresent()) { lastTaskStatus = taskIdHistory.getLastTaskState().get().name(); } if (LOG.isTraceEnabled()) { LOG.trace("saveTaskHistory -- will insert taskHistory {}", taskHistory); } history.insertTaskHistory(taskIdHistory.getTaskId().getRequestId(), taskIdHistory.getTaskId().getId(), taskHistoryTranscoder.toBytes(taskHistory), new Date(taskIdHistory.getUpdatedAt()), lastTaskStatus, taskHistory.getTask().getTaskRequest().getPendingTask().getRunId().orNull(), taskIdHistory.getTaskId().getDeployId(), taskIdHistory.getTaskId().getHost(), new Date(taskIdHistory.getTaskId().getStartedAt())); }
private void match(List<SingularityTaskIdHistory> history, int num, SingularityTask... tasks) { Assert.assertEquals(num, history.size()); for (int i = 0; i < tasks.length; i++) { SingularityTaskIdHistory idHistory = history.get(i); SingularityTask task = tasks[i]; Assert.assertEquals(task.getTaskId(), idHistory.getTaskId()); } }
@GET @Path("/request/{requestId}/command-line-args") @Operation(summary = "Get a list of recently used command line args for an on-demand or scheduled request") public Set<List<String>> getRecentCommandLineArgs( @Parameter(hidden = true) @Auth SingularityUser user, @Parameter(required = true, description = "Request ID to look up") @PathParam("requestId") String requestId, @Parameter(description = "Max number of recent args to return") @QueryParam("count") Optional<Integer> count) { authorizationHelper.checkForAuthorizationByRequestId(requestId, user, SingularityAuthorizationScope.READ); final int argCount = count.or(DEFAULT_ARGS_HISTORY_COUNT); List<SingularityTaskIdHistory> historiesToCheck = taskHistoryHelper.getBlendedHistory(new SingularityTaskHistoryQuery( Optional.of(requestId), Optional.<String>absent(), Optional.<String>absent(), Optional.<String>absent(), Optional.<ExtendedTaskState>absent(), Optional.<Long>absent(), Optional.<Long>absent(), Optional.<Long>absent(), Optional.<Long>absent(), Optional.<OrderDirection>absent()), 0, argCount); Collections.sort(historiesToCheck); Set<List<String>> args = new HashSet<>(); for (SingularityTaskIdHistory taskIdHistory : historiesToCheck) { Optional<SingularityTask> maybeTask = taskHistoryHelper.getTask(taskIdHistory.getTaskId()); if (maybeTask.isPresent() && maybeTask.get().getTaskRequest().getPendingTask().getCmdLineArgsList().isPresent()) { List<String> taskArgs = maybeTask.get().getTaskRequest().getPendingTask().getCmdLineArgsList().get(); if (!taskArgs.isEmpty()) { args.add(maybeTask.get().getTaskRequest().getPendingTask().getCmdLineArgsList().get()); } } } return args; }
@Override public void saveTaskHistory(SingularityTaskHistory taskHistory) { if (history.getTaskHistoryForTask(taskHistory.getTask().getTaskId().getId()) != null) { if (LOG.isTraceEnabled()) { LOG.trace("saveTaskHistory -- existing taskHistory {}", taskHistory); } return; } SingularityTaskIdHistory taskIdHistory = SingularityTaskIdHistory.fromTaskIdAndTaskAndUpdates(taskHistory.getTask().getTaskId(), taskHistory.getTask(), taskHistory.getTaskUpdates()); String lastTaskStatus = null; if (taskIdHistory.getLastTaskState().isPresent()) { lastTaskStatus = taskIdHistory.getLastTaskState().get().name(); } if (LOG.isTraceEnabled()) { LOG.trace("saveTaskHistory -- will insert taskHistory {}", taskHistory); } history.insertTaskHistory(taskIdHistory.getTaskId().getRequestId(), taskIdHistory.getTaskId().getId(), taskHistoryTranscoder.toBytes(taskHistory), new Date(taskIdHistory.getUpdatedAt()), lastTaskStatus, taskHistory.getTask().getTaskRequest().getPendingTask().getRunId().orNull(), taskIdHistory.getTaskId().getDeployId(), taskIdHistory.getTaskId().getHost(), new Date(taskIdHistory.getTaskId().getStartedAt())); }
private void match(List<SingularityTaskIdHistory> history, int num, SingularityTask... tasks) { Assert.assertEquals(num, history.size()); for (int i = 0; i < tasks.length; i++) { SingularityTaskIdHistory idHistory = history.get(i); SingularityTask task = tasks[i]; Assert.assertEquals(task.getTaskId(), idHistory.getTaskId()); } }