Browse Source

Do not report empty parent task id in trace attributes. (#131002)

Do not report empty parent task id in trace attributes.

Relates to ES-10969
Moritz Mack 3 months ago
parent
commit
7b359a9f8e

+ 3 - 6
server/src/main/java/org/elasticsearch/tasks/TaskManager.java

@@ -179,12 +179,9 @@ public class TaskManager implements ClusterStateApplier {
     // package private for testing
     void startTrace(ThreadContext threadContext, Task task) {
         TaskId parentTask = task.getParentTaskId();
-        Map<String, Object> attributes = Map.of(
-            Tracer.AttributeKeys.TASK_ID,
-            task.getId(),
-            Tracer.AttributeKeys.PARENT_TASK_ID,
-            parentTask.toString()
-        );
+        Map<String, Object> attributes = parentTask.isSet()
+            ? Map.of(Tracer.AttributeKeys.TASK_ID, task.getId(), Tracer.AttributeKeys.PARENT_TASK_ID, parentTask.toString())
+            : Map.of(Tracer.AttributeKeys.TASK_ID, task.getId());
         tracer.startTrace(threadContext, task, task.getAction(), attributes);
     }
 

+ 8 - 2
server/src/test/java/org/elasticsearch/tasks/TaskManagerTests.java

@@ -285,6 +285,9 @@ public class TaskManagerTests extends ESTestCase {
         final Tracer mockTracer = mock(Tracer.class);
         final TaskManager taskManager = new TaskManager(Settings.EMPTY, threadPool, Set.of(), mockTracer);
 
+        final boolean hasParentTask = randomBoolean();
+        final TaskId parentTask = hasParentTask ? new TaskId("parentNode", 1) : TaskId.EMPTY_TASK_ID;
+
         final Task task = taskManager.register("testType", "testAction", new TaskAwareRequest() {
 
             @Override
@@ -295,11 +298,14 @@ public class TaskManagerTests extends ESTestCase {
 
             @Override
             public TaskId getParentTask() {
-                return TaskId.EMPTY_TASK_ID;
+                return parentTask;
             }
         });
 
-        verify(mockTracer).startTrace(any(), eq(task), eq("testAction"), anyMap());
+        Map<String, Object> attributes = hasParentTask
+            ? Map.of(Tracer.AttributeKeys.TASK_ID, task.getId(), Tracer.AttributeKeys.PARENT_TASK_ID, parentTask.toString())
+            : Map.of(Tracer.AttributeKeys.TASK_ID, task.getId());
+        verify(mockTracer).startTrace(any(), eq(task), eq("testAction"), eq(attributes));
     }
 
     /**