throw new SQLException(e); taskInfo = new TaskInfo<>( resultSet.getString("id"), DateTimes.of(resultSet.getString("created_date")),
private static BiFunction<TaskInfo<Task, TaskStatus>, RunnerTaskState, TaskStatusPlus> newTaskInfo2TaskStatusPlusFn() { return (taskInfo, runnerTaskState) -> new TaskStatusPlus( taskInfo.getId(), taskInfo.getTask() == null ? null : taskInfo.getTask().getType(), taskInfo.getCreatedTime(), // Would be nice to include the real queue insertion time, but the // TaskStorage API doesn't yet allow it. DateTimes.EPOCH, taskInfo.getStatus().getStatusCode(), runnerTaskState, taskInfo.getStatus().getDuration(), TaskLocation.unknown(), taskInfo.getDataSource(), taskInfo.getStatus().getErrorMsg() ); }
@Override public List<Task> getActiveTasks() { // filter out taskInfo with a null 'task' which should only happen in practice if we are missing a jackson module // and don't know what to do with the payload, so we won't be able to make use of it anyway return handler.getActiveTaskInfo(null) .stream() .filter(taskInfo -> taskInfo.getStatus().isRunnable() && taskInfo.getTask() != null) .map(TaskInfo::getTask) .collect(Collectors.toList()); }
@Override public Response apply(TaskQueue taskQueue) { final List<TaskInfo<Task, TaskStatus>> tasks = taskStorageQueryAdapter.getActiveTaskInfo(dataSource); if (tasks.isEmpty()) { return Response.status(Status.NOT_FOUND).build(); } else { for (final TaskInfo<Task, TaskStatus> task : tasks) { taskQueue.shutdown(task.getId(), "Shutdown request from user"); } return Response.ok(ImmutableMap.of("dataSource", dataSource)).build(); } } }
@Test public void testGetRecentStatuses() throws EntryExistsException { for (int i = 1; i < 11; i++) { final String entryId = "abcd_" + i; final Map<String, Integer> entry = ImmutableMap.of("a", i); final Map<String, Integer> status = ImmutableMap.of("count", i * 10); handler.insert(entryId, DateTimes.of(StringUtils.format("2014-01-%02d", i)), "test", entry, false, status); } final List<TaskInfo<Map<String, Integer>, Map<String, Integer>>> statuses = handler.getCompletedTaskInfo( DateTimes.of("2014-01-01"), 7, null ); Assert.assertEquals(7, statuses.size()); int i = 10; for (TaskInfo<Map<String, Integer>, Map<String, Integer>> status : statuses) { Assert.assertEquals(ImmutableMap.of("count", i-- * 10), status.getStatus()); } }
ImmutableList.of(Pair.of(entry, status1)), handler.getActiveTaskInfo(null).stream() .map(taskInfo -> Pair.of(taskInfo.getTask(), taskInfo.getStatus())) .collect(Collectors.toList()) ); ImmutableList.of(Pair.of(entry, status2)), handler.getActiveTaskInfo(null).stream() .map(taskInfo -> Pair.of(taskInfo.getTask(), taskInfo.getStatus())) .collect(Collectors.toList()) );
ImmutableList.of(entryId2), handler.getActiveTaskInfo(null).stream() .map(taskInfo -> taskInfo.getId()) .collect(Collectors.toList()) ); ImmutableList.of(entryId3, entryId1), handler.getCompletedTaskInfo(DateTimes.of("2014-01-01"), null, null).stream() .map(taskInfo -> taskInfo.getId()) .collect(Collectors.toList()) ImmutableList.of(entryId2), handler.getActiveTaskInfo(null).stream() .map(taskInfo -> taskInfo.getId()) .collect(Collectors.toList()) ); ImmutableList.of(entryId3), handler.getCompletedTaskInfo(DateTimes.of("2014-01-01"), null, null).stream() .map(taskInfo -> taskInfo.getId()) .collect(Collectors.toList())
@Test public void testGetRecentStatuses2() throws EntryExistsException { for (int i = 1; i < 6; i++) { final String entryId = "abcd_" + i; final Map<String, Integer> entry = ImmutableMap.of("a", i); final Map<String, Integer> status = ImmutableMap.of("count", i * 10); handler.insert(entryId, DateTimes.of(StringUtils.format("2014-01-%02d", i)), "test", entry, false, status); } final List<TaskInfo<Map<String, Integer>, Map<String, Integer>>> statuses = handler.getCompletedTaskInfo( DateTimes.of("2014-01-01"), 10, null ); Assert.assertEquals(5, statuses.size()); int i = 5; for (TaskInfo<Map<String, Integer>, Map<String, Integer>> status : statuses) { Assert.assertEquals(ImmutableMap.of("count", i-- * 10), status.getStatus()); } }
workItem.getTaskId(), new TaskStatusPlus( taskInfo.getId(), taskInfo.getTask() == null ? null : taskInfo.getTask().getType(), taskInfo.getCreatedTime(), taskInfo.getStatus().getStatusCode(), taskRunner.getRunnerTaskState(workItem.getTaskId()), taskInfo.getStatus().getDuration(), workItem.getLocation(), taskInfo.getDataSource(), taskInfo.getStatus().getErrorMsg() taskid, new TaskStatusPlus( taskInfo.getId(), taskInfo.getTask() == null ? null : taskInfo.getTask().getType(), taskInfo.getCreatedTime(), taskInfo.getStatus().getStatusCode(), RunnerTaskState.WAITING, taskInfo.getStatus().getDuration(), TaskLocation.unknown(), taskInfo.getDataSource(), taskInfo.getStatus().getErrorMsg()
private List<TaskInfo<Task, TaskStatus>> getNRecentlyCreatedAlreadyFinishedTaskInfo(int n, Ordering<TaskStuff> createdDateDesc) { giant.lock(); try { List<TaskStuff> list = createdDateDesc .sortedCopy(tasks.values()) .stream() .filter(taskStuff -> taskStuff.getStatus().isComplete()) .limit(n) .collect(Collectors.toList()); final ImmutableList.Builder<TaskInfo<Task, TaskStatus>> listBuilder = ImmutableList.builder(); for (final TaskStuff taskStuff : list) { String id = taskStuff.getTask().getId(); TaskInfo t = new TaskInfo<>( id, taskStuff.getCreatedDate(), taskStuff.getStatus(), taskStuff.getDataSource(), taskStuff.getTask() ); listBuilder.add(t); } return listBuilder.build(); } finally { giant.unlock(); } }
@Override public List<Task> getActiveTasks() { // filter out taskInfo with a null 'task' which should only happen in practice if we are missing a jackson module // and don't know what to do with the payload, so we won't be able to make use of it anyway return handler.getActiveTaskInfo(null) .stream() .filter(taskInfo -> taskInfo.getStatus().isRunnable() && taskInfo.getTask() != null) .map(TaskInfo::getTask) .collect(Collectors.toList()); }
@Override public Response apply(TaskQueue taskQueue) { final List<TaskInfo<Task, TaskStatus>> tasks = taskStorageQueryAdapter.getActiveTaskInfo(dataSource); for (final TaskInfo<Task, TaskStatus> task : tasks) { taskQueue.shutdown(task.getId()); } return Response.ok(ImmutableMap.of("dataSource", dataSource)).build(); } }
taskInfo.getId(), taskInfo.getTask() == null ? null : taskInfo.getTask().getType(), taskInfo.getCreatedTime(), taskInfo.getStatus().getStatusCode(), RunnerTaskState.NONE, taskInfo.getStatus().getDuration(), TaskLocation.unknown(), taskInfo.getDataSource(), taskInfo.getStatus().getErrorMsg() ); allActiveTasks.add( new AnyTask( task.getId(), task.getTask() == null ? null : task.getTask().getType(), SettableFuture.create(), task.getDataSource(), null, null, task.getCreatedTime(), DateTimes.EPOCH, TaskLocation.unknown()
private List<TaskInfo<Task, TaskStatus>> getRecentlyCreatedAlreadyFinishedTaskInfoSince( DateTime start, Ordering<TaskStuff> createdDateDesc ) { giant.lock(); try { List<TaskStuff> list = createdDateDesc .sortedCopy(tasks.values()) .stream() .filter(taskStuff -> taskStuff.getStatus().isComplete() && taskStuff.createdDate.isAfter(start)) .collect(Collectors.toList()); final ImmutableList.Builder<TaskInfo<Task, TaskStatus>> listBuilder = ImmutableList.builder(); for (final TaskStuff taskStuff : list) { String id = taskStuff.getTask().getId(); TaskInfo t = new TaskInfo( id, taskStuff.getCreatedDate(), taskStuff.getStatus(), taskStuff.getDataSource(), taskStuff.getTask() ); listBuilder.add(t); } return listBuilder.build(); } finally { giant.unlock(); } }
private static BiFunction<TaskInfo<Task, TaskStatus>, RunnerTaskState, TaskStatusPlus> newTaskInfo2TaskStatusPlusFn() { return (taskInfo, runnerTaskState) -> new TaskStatusPlus( taskInfo.getId(), taskInfo.getTask() == null ? null : taskInfo.getTask().getType(), taskInfo.getCreatedTime(), // Would be nice to include the real queue insertion time, but the // TaskStorage API doesn't yet allow it. DateTimes.EPOCH, taskInfo.getStatus().getStatusCode(), runnerTaskState, taskInfo.getStatus().getDuration(), TaskLocation.unknown(), taskInfo.getDataSource(), taskInfo.getStatus().getErrorMsg() ); }
@Nullable @Override public TaskInfo<Task, TaskStatus> getTaskInfo(String taskId) { giant.lock(); try { Preconditions.checkNotNull(taskId, "taskId"); final TaskStuff taskStuff = tasks.get(taskId); if (taskStuff != null) { return new TaskInfo<>( taskStuff.getTask().getId(), taskStuff.getCreatedDate(), taskStuff.getStatus(), taskStuff.getDataSource(), taskStuff.getTask() ); } else { return null; } } finally { giant.unlock(); } }
workItem.getTaskId(), new TaskStatusPlus( taskInfo.getId(), taskInfo.getTask() == null ? null : taskInfo.getTask().getType(), taskInfo.getCreatedTime(), taskInfo.getStatus().getStatusCode(), taskRunner.getRunnerTaskState(workItem.getTaskId()), taskInfo.getStatus().getDuration(), workItem.getLocation(), taskInfo.getDataSource(), taskInfo.getStatus().getErrorMsg() taskid, new TaskStatusPlus( taskInfo.getId(), taskInfo.getTask() == null ? null : taskInfo.getTask().getType(), taskInfo.getCreatedTime(), taskInfo.getStatus().getStatusCode(), RunnerTaskState.WAITING, taskInfo.getStatus().getDuration(), TaskLocation.unknown(), taskInfo.getDataSource(), taskInfo.getStatus().getErrorMsg()
@Override public List<TaskInfo<Task, TaskStatus>> getActiveTaskInfo(@Nullable String dataSource) { giant.lock(); try { final ImmutableList.Builder<TaskInfo<Task, TaskStatus>> listBuilder = ImmutableList.builder(); for (final TaskStuff taskStuff : tasks.values()) { if (taskStuff.getStatus().isRunnable()) { TaskInfo t = new TaskInfo( taskStuff.getTask().getId(), taskStuff.getCreatedDate(), taskStuff.getStatus(), taskStuff.getDataSource(), taskStuff.getTask() ); listBuilder.add(t); } } return listBuilder.build(); } finally { giant.unlock(); } }
taskInfo.getId(), taskInfo.getTask() == null ? null : taskInfo.getTask().getType(), taskInfo.getCreatedTime(), taskInfo.getStatus().getStatusCode(), RunnerTaskState.NONE, taskInfo.getStatus().getDuration(), TaskLocation.unknown(), taskInfo.getDataSource(), taskInfo.getStatus().getErrorMsg() ); allActiveTasks.add( new AnyTask( task.getId(), task.getTask() == null ? null : task.getTask().getType(), SettableFuture.create(), task.getDataSource(), null, null, task.getCreatedTime(), DateTimes.EPOCH, TaskLocation.unknown()