private void nodeOperation(NodeTaskRequest nodeTaskRequest, ActionListener<NodeTasksResponse> listener) { TasksRequest request = nodeTaskRequest.tasksRequest; List<OperationTask> tasks = new ArrayList<>(); processTasks(request, tasks::add); if (tasks.isEmpty()) { listener.onResponse(new NodeTasksResponse(clusterService.localNode().getId(), emptyList(), emptyList()));
@Override protected void processTasks(ListTasksRequest request, Consumer<Task> operation) { if (request.getWaitForCompletion()) { long timeoutNanos = waitForCompletionTimeout(request.getTimeout()); operation = operation.andThen(task -> { if (task.getAction().startsWith(ListTasksAction.NAME)) { // It doesn't make sense to wait for List Tasks and it can cause an infinite loop of the task waiting // for itself or one of its child tasks return; } taskManager.waitForTaskCompletion(task, timeoutNanos); }); } super.processTasks(request, operation); }
private NodeTasksResponse nodeOperation(NodeTaskRequest nodeTaskRequest) { final TasksRequest request = nodeTaskRequest.tasksRequest; final List<TaskResponse> results = new ArrayList<>(); final List<TaskOperationFailure> exceptions = new ArrayList<>(); processTasks(request, new Consumer<OperationTask>() { @Override public void accept(OperationTask task) { try { TaskResponse response = taskOperation(request, task); if (response != null) { results.add(response); } } catch (Exception ex) { exceptions.add(new TaskOperationFailure(clusterService.localNode().id(), task.getId(), ex)); } } }); return new NodeTasksResponse(clusterService.localNode().id(), results, exceptions); }
@Override protected void processTasks(ListTasksRequest request, final Consumer<Task> operation) { if (false == request.getWaitForCompletion()) { super.processTasks(request, operation); return; super.processTasks(request, new Consumer<Task>() { @Override public void accept(Task t) {
private void nodeOperation(NodeTaskRequest nodeTaskRequest, ActionListener<NodeTasksResponse> listener) { TasksRequest request = nodeTaskRequest.tasksRequest; List<OperationTask> tasks = new ArrayList<>(); processTasks(request, tasks::add); if (tasks.isEmpty()) { listener.onResponse(new NodeTasksResponse(clusterService.localNode().getId(), emptyList(), emptyList()));
private void nodeOperation(NodeTaskRequest nodeTaskRequest, ActionListener<NodeTasksResponse> listener) { TasksRequest request = nodeTaskRequest.tasksRequest; List<OperationTask> tasks = new ArrayList<>(); processTasks(request, tasks::add); if (tasks.isEmpty()) { listener.onResponse(new NodeTasksResponse(clusterService.localNode().getId(), emptyList(), emptyList()));
private void nodeOperation(NodeTaskRequest nodeTaskRequest, ActionListener<NodeTasksResponse> listener) { TasksRequest request = nodeTaskRequest.tasksRequest; List<OperationTask> tasks = new ArrayList<>(); processTasks(request, tasks::add); if (tasks.isEmpty()) { listener.onResponse(new NodeTasksResponse(clusterService.localNode().getId(), emptyList(), emptyList()));
@Override protected void processTasks(ListTasksRequest request, Consumer<Task> operation) { if (request.getWaitForCompletion()) { long timeoutNanos = waitForCompletionTimeout(request.getTimeout()); operation = operation.andThen(task -> { if (task.getAction().startsWith(ListTasksAction.NAME)) { // It doesn't make sense to wait for List Tasks and it can cause an infinite loop of the task waiting // for itself or one of its child tasks return; } taskManager.waitForTaskCompletion(task, timeoutNanos); }); } super.processTasks(request, operation); }
@Override protected void processTasks(ListTasksRequest request, Consumer<Task> operation) { if (request.getWaitForCompletion()) { long timeoutNanos = waitForCompletionTimeout(request.getTimeout()); operation = operation.andThen(task -> { if (task.getAction().startsWith(ListTasksAction.NAME)) { // It doesn't make sense to wait for List Tasks and it can cause an infinite loop of the task waiting // for itself or one of its child tasks return; } taskManager.waitForTaskCompletion(task, timeoutNanos); }); } super.processTasks(request, operation); }
@Override protected void processTasks(ListTasksRequest request, Consumer<Task> operation) { if (request.getWaitForCompletion()) { long timeoutNanos = waitForCompletionTimeout(request.getTimeout()); operation = operation.andThen(task -> { if (task.getAction().startsWith(ListTasksAction.NAME)) { // It doesn't make sense to wait for List Tasks and it can cause an infinite loop of the task waiting // for itself or one of its child tasks return; } taskManager.waitForTaskCompletion(task, timeoutNanos); }); } super.processTasks(request, operation); }