Skip to content

Commit edbaa19

Browse files
committed
Add trace log for task cancellation (elastic#55940)
Adding trace logs to the task cancellation and its tests to debug the test failure in elastic#55875. Relates #elastic#55875
1 parent 144e8ce commit edbaa19

File tree

3 files changed

+25
-10
lines changed

3 files changed

+25
-10
lines changed

server/src/main/java/org/elasticsearch/action/admin/cluster/node/tasks/cancel/TransportCancelTasksAction.java

+16-9
Original file line numberDiff line numberDiff line change
@@ -113,13 +113,19 @@ protected void taskOperation(CancelTasksRequest request, CancellableTask cancell
113113
}
114114

115115
void cancelTaskAndDescendants(CancellableTask task, String reason, boolean waitForCompletion, ActionListener<Void> listener) {
116+
final TaskId taskId = task.taskInfo(clusterService.localNode().getId(), false).getTaskId();
116117
if (task.shouldCancelChildrenOnCancellation()) {
118+
logger.trace("cancelling task [{}] and its descendants", taskId);
117119
StepListener<Void> completedListener = new StepListener<>();
118120
GroupedActionListener<Void> groupedListener = new GroupedActionListener<>(ActionListener.map(completedListener, r -> null), 3);
119-
Collection<DiscoveryNode> childrenNodes =
120-
taskManager.startBanOnChildrenNodes(task.getId(), () -> groupedListener.onResponse(null));
121-
taskManager.cancel(task, reason, () -> groupedListener.onResponse(null));
122-
121+
Collection<DiscoveryNode> childrenNodes = taskManager.startBanOnChildrenNodes(task.getId(), () -> {
122+
logger.trace("child tasks of parent [{}] are completed", taskId);
123+
groupedListener.onResponse(null);
124+
});
125+
taskManager.cancel(task, reason, () -> {
126+
logger.trace("task [{}] is cancelled", taskId);
127+
groupedListener.onResponse(null);
128+
});
123129
StepListener<Void> banOnNodesListener = new StepListener<>();
124130
setBanOnNodes(reason, waitForCompletion, task, childrenNodes, banOnNodesListener);
125131
banOnNodesListener.whenComplete(groupedListener::onResponse, groupedListener::onFailure);
@@ -137,7 +143,7 @@ void cancelTaskAndDescendants(CancellableTask task, String reason, boolean waitF
137143
banOnNodesListener.whenComplete(r -> listener.onResponse(null), listener::onFailure);
138144
}
139145
} else {
140-
logger.trace("task {} doesn't have any children that should be cancelled", task.getId());
146+
logger.trace("task [{}] doesn't have any children that should be cancelled", taskId);
141147
if (waitForCompletion) {
142148
taskManager.cancel(task, reason, () -> listener.onResponse(null));
143149
} else {
@@ -153,23 +159,24 @@ private void setBanOnNodes(String reason, boolean waitForCompletion, Cancellable
153159
listener.onResponse(null);
154160
return;
155161
}
156-
logger.trace("cancelling task {} on child nodes {}", task.getId(), childNodes);
162+
final TaskId taskId = new TaskId(clusterService.localNode().getId(), task.getId());
163+
logger.trace("cancelling child tasks of [{}] on child nodes {}", taskId, childNodes);
157164
GroupedActionListener<Void> groupedListener =
158165
new GroupedActionListener<>(ActionListener.map(listener, r -> null), childNodes.size());
159-
final BanParentTaskRequest banRequest = BanParentTaskRequest.createSetBanParentTaskRequest(
160-
new TaskId(clusterService.localNode().getId(), task.getId()), reason, waitForCompletion);
166+
final BanParentTaskRequest banRequest = BanParentTaskRequest.createSetBanParentTaskRequest(taskId, reason, waitForCompletion);
161167
for (DiscoveryNode node : childNodes) {
162168
transportService.sendRequest(node, BAN_PARENT_ACTION_NAME, banRequest,
163169
new EmptyTransportResponseHandler(ThreadPool.Names.SAME) {
164170
@Override
165171
public void handleResponse(TransportResponse.Empty response) {
172+
logger.trace("sent ban for tasks with the parent [{}] to the node [{}]", taskId, node);
166173
groupedListener.onResponse(null);
167174
}
168175

169176
@Override
170177
public void handleException(TransportException exp) {
171178
assert ExceptionsHelper.unwrapCause(exp) instanceof ElasticsearchSecurityException == false;
172-
logger.warn("Cannot send ban for tasks with the parent [{}] to the node [{}]", banRequest.parentTaskId, node);
179+
logger.warn("Cannot send ban for tasks with the parent [{}] to the node [{}]", taskId, node);
173180
groupedListener.onFailure(exp);
174181
}
175182
});

server/src/main/java/org/elasticsearch/tasks/TaskManager.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -197,8 +197,12 @@ public Task unregister(Task task) {
197197
public Releasable registerChildNode(long taskId, DiscoveryNode node) {
198198
final CancellableTaskHolder holder = cancellableTasks.get(taskId);
199199
if (holder != null) {
200+
logger.trace("register child node [{}] task [{}]", node, taskId);
200201
holder.registerChildNode(node);
201-
return Releasables.releaseOnce(() -> holder.unregisterChildNode(node));
202+
return Releasables.releaseOnce(() -> {
203+
logger.trace("unregister child node [{}] task [{}]", node, taskId);
204+
holder.unregisterChildNode(node);
205+
});
202206
}
203207
return () -> {};
204208
}

server/src/test/java/org/elasticsearch/action/admin/cluster/node/tasks/CancellableTasksIT.java

+4
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
import org.elasticsearch.tasks.TaskInfo;
5353
import org.elasticsearch.tasks.TaskManager;
5454
import org.elasticsearch.test.ESIntegTestCase;
55+
import org.elasticsearch.test.junit.annotations.TestIssueLogging;
5556
import org.elasticsearch.threadpool.ThreadPool;
5657
import org.elasticsearch.transport.TransportException;
5758
import org.elasticsearch.transport.TransportResponseHandler;
@@ -79,6 +80,9 @@
7980
import static org.hamcrest.Matchers.hasSize;
8081
import static org.hamcrest.Matchers.instanceOf;
8182

83+
@TestIssueLogging(
84+
value = "org.elasticsearch.action.admin.cluster.node.tasks.cancel:TRACE,org.elasticsearch.tasks:TRACE",
85+
issueUrl = "https://github.com/elastic/elasticsearch/issues/55875")
8286
public class CancellableTasksIT extends ESIntegTestCase {
8387

8488
static int idGenerator = 0;

0 commit comments

Comments
 (0)