This is an automated email from the ASF dual-hosted git repository.

adarshsanjeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/druid.git


The following commit(s) were added to refs/heads/master by this push:
     new c5127ba92fe Get reports file from file writer (#18379)
c5127ba92fe is described below

commit c5127ba92fe32d031fa25a10ef302e2d53e871c8
Author: Adarsh Sanjeev <[email protected]>
AuthorDate: Tue Aug 12 10:03:41 2025 +0530

    Get reports file from file writer (#18379)
    
    Switch to using the reports file from the reports writer when pushing the 
reports. This fixes a bug where the AbstractTask could be unable to find the 
report.
---
 .../druid/indexing/common/MultipleFileTaskReportFileWriter.java  | 6 ++++++
 .../java/org/apache/druid/indexing/common/task/AbstractTask.java | 2 +-
 .../org/apache/druid/indexing/overlord/duty/KillTaskToolbox.java | 9 +++++++++
 .../indexing/common/MultipleFileTaskReportFileWriterTest.java    | 2 ++
 .../indexing/common/SingleFileTaskReportFileWriterTest.java      | 2 ++
 .../org/apache/druid/indexing/common/task/AbstractTaskTest.java  | 4 ++++
 .../druid/indexing/common/task/NoopTestTaskReportFileWriter.java | 7 +++++++
 .../druid/indexer/report/SingleFileTaskReportFileWriter.java     | 6 ++++++
 .../org/apache/druid/indexer/report/TaskReportFileWriter.java    | 8 ++++++++
 9 files changed, 45 insertions(+), 1 deletion(-)

diff --git 
a/indexing-service/src/main/java/org/apache/druid/indexing/common/MultipleFileTaskReportFileWriter.java
 
b/indexing-service/src/main/java/org/apache/druid/indexing/common/MultipleFileTaskReportFileWriter.java
index 865a8593a7d..edf8e028b91 100644
--- 
a/indexing-service/src/main/java/org/apache/druid/indexing/common/MultipleFileTaskReportFileWriter.java
+++ 
b/indexing-service/src/main/java/org/apache/druid/indexing/common/MultipleFileTaskReportFileWriter.java
@@ -75,6 +75,12 @@ public class MultipleFileTaskReportFileWriter implements 
TaskReportFileWriter
     this.objectMapper = objectMapper;
   }
 
+  @Override
+  public File getReportsFile(String taskId)
+  {
+    return taskReportFiles.get(taskId);
+  }
+
   public void add(String taskId, File reportsFile)
   {
     taskReportFiles.put(taskId, reportsFile);
diff --git 
a/indexing-service/src/main/java/org/apache/druid/indexing/common/task/AbstractTask.java
 
b/indexing-service/src/main/java/org/apache/druid/indexing/common/task/AbstractTask.java
index a3331767ba9..aa205900291 100644
--- 
a/indexing-service/src/main/java/org/apache/druid/indexing/common/task/AbstractTask.java
+++ 
b/indexing-service/src/main/java/org/apache/druid/indexing/common/task/AbstractTask.java
@@ -153,7 +153,7 @@ public abstract class AbstractTask implements Task
       FileUtils.mkdirp(taskDir);
       File attemptDir = Paths.get(taskDir.getAbsolutePath(), "attempt", 
toolbox.getAttemptId()).toFile();
       FileUtils.mkdirp(attemptDir);
-      reportsFile = new File(attemptDir, "report.json");
+      reportsFile = toolbox.getTaskReportFileWriter().getReportsFile(getId());
       statusFile = new File(attemptDir, "status.json");
       InetAddress hostName = InetAddress.getLocalHost();
       DruidNode node = toolbox.getTaskExecutorNode();
diff --git 
a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/duty/KillTaskToolbox.java
 
b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/duty/KillTaskToolbox.java
index dd2afe6017d..5451b3711e9 100644
--- 
a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/duty/KillTaskToolbox.java
+++ 
b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/duty/KillTaskToolbox.java
@@ -33,6 +33,8 @@ import org.apache.druid.segment.column.ColumnConfig;
 import org.apache.druid.segment.loading.DataSegmentKiller;
 import org.apache.druid.segment.writeout.TmpFileSegmentWriteOutMediumFactory;
 
+import javax.annotation.Nullable;
+import java.io.File;
 import java.io.OutputStream;
 
 /**
@@ -82,6 +84,13 @@ public class KillTaskToolbox
       // Do nothing
     }
 
+    @Override
+    @Nullable
+    public File getReportsFile(String taskId)
+    {
+      return null;
+    }
+
     @Override
     public void write(String taskId, TaskReport.ReportMap reports)
     {
diff --git 
a/indexing-service/src/test/java/org/apache/druid/indexing/common/MultipleFileTaskReportFileWriterTest.java
 
b/indexing-service/src/test/java/org/apache/druid/indexing/common/MultipleFileTaskReportFileWriterTest.java
index 2e51973ec24..3ded86c1c43 100644
--- 
a/indexing-service/src/test/java/org/apache/druid/indexing/common/MultipleFileTaskReportFileWriterTest.java
+++ 
b/indexing-service/src/test/java/org/apache/druid/indexing/common/MultipleFileTaskReportFileWriterTest.java
@@ -60,5 +60,7 @@ public class MultipleFileTaskReportFileWriterTest
         reportsMap,
         mapper.readValue(Files.readAllBytes(file.toPath()), new 
TypeReference<Map<String, TaskReport>>() {})
     );
+
+    Assert.assertEquals(file.getAbsolutePath(), 
writer.getReportsFile(TASK_ID).getAbsolutePath());
   }
 }
diff --git 
a/indexing-service/src/test/java/org/apache/druid/indexing/common/SingleFileTaskReportFileWriterTest.java
 
b/indexing-service/src/test/java/org/apache/druid/indexing/common/SingleFileTaskReportFileWriterTest.java
index 1381a7483cb..057ef7bfa05 100644
--- 
a/indexing-service/src/test/java/org/apache/druid/indexing/common/SingleFileTaskReportFileWriterTest.java
+++ 
b/indexing-service/src/test/java/org/apache/druid/indexing/common/SingleFileTaskReportFileWriterTest.java
@@ -57,5 +57,7 @@ public class SingleFileTaskReportFileWriterTest
         reportsMap,
         mapper.readValue(Files.readAllBytes(file.toPath()), new 
TypeReference<Map<String, TaskReport>>() {})
     );
+
+    Assert.assertEquals(file.getAbsolutePath(), 
writer.getReportsFile(TASK_ID).getAbsolutePath());
   }
 }
diff --git 
a/indexing-service/src/test/java/org/apache/druid/indexing/common/task/AbstractTaskTest.java
 
b/indexing-service/src/test/java/org/apache/druid/indexing/common/task/AbstractTaskTest.java
index ba210fee228..987bf988db0 100644
--- 
a/indexing-service/src/test/java/org/apache/druid/indexing/common/task/AbstractTaskTest.java
+++ 
b/indexing-service/src/test/java/org/apache/druid/indexing/common/task/AbstractTaskTest.java
@@ -22,6 +22,7 @@ package org.apache.druid.indexing.common.task;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.commons.io.FileUtils;
 import org.apache.druid.indexer.TaskStatus;
+import org.apache.druid.indexer.report.SingleFileTaskReportFileWriter;
 import org.apache.druid.indexing.common.TaskToolbox;
 import org.apache.druid.indexing.common.TestUtils;
 import org.apache.druid.indexing.common.actions.TaskActionClient;
@@ -88,6 +89,7 @@ public class AbstractTaskTest
     TaskActionClient taskActionClient = mock(TaskActionClient.class);
     when(taskActionClient.submit(any())).thenReturn(TaskConfig.class);
     when(toolbox.getTaskActionClient()).thenReturn(taskActionClient);
+    when(toolbox.getTaskReportFileWriter()).thenReturn(new 
SingleFileTaskReportFileWriter(temporaryFolder.newFile()));
 
 
     AbstractTask task = new NoopTask("myID", null, null, 1, 0, null)
@@ -181,6 +183,7 @@ public class AbstractTaskTest
     TaskActionClient taskActionClient = mock(TaskActionClient.class);
     when(taskActionClient.submit(any())).thenReturn(TaskConfig.class);
     when(toolbox.getTaskActionClient()).thenReturn(taskActionClient);
+    when(toolbox.getTaskReportFileWriter()).thenReturn(new 
SingleFileTaskReportFileWriter(temporaryFolder.newFile()));
 
     TaskStatus taskStatus = TaskStatus.failure("myId", "failed");
     AbstractTask task = new NoopTask("myID", null, null, 1, 0, null)
@@ -201,6 +204,7 @@ public class AbstractTaskTest
   {
     TaskToolbox toolbox = mock(TaskToolbox.class);
     when(toolbox.getAttemptId()).thenReturn("1");
+    when(toolbox.getTaskReportFileWriter()).thenReturn(new 
SingleFileTaskReportFileWriter(temporaryFolder.newFile()));
 
     DruidNode node = new DruidNode("foo", "foo", false, 1, 2, true, true);
     when(toolbox.getTaskExecutorNode()).thenReturn(node);
diff --git 
a/indexing-service/src/test/java/org/apache/druid/indexing/common/task/NoopTestTaskReportFileWriter.java
 
b/indexing-service/src/test/java/org/apache/druid/indexing/common/task/NoopTestTaskReportFileWriter.java
index ad175faeb49..ff52e966657 100644
--- 
a/indexing-service/src/test/java/org/apache/druid/indexing/common/task/NoopTestTaskReportFileWriter.java
+++ 
b/indexing-service/src/test/java/org/apache/druid/indexing/common/task/NoopTestTaskReportFileWriter.java
@@ -24,6 +24,7 @@ import org.apache.druid.indexer.report.TaskReport;
 import org.apache.druid.indexer.report.TaskReportFileWriter;
 
 import java.io.ByteArrayOutputStream;
+import java.io.File;
 import java.io.OutputStream;
 
 public class NoopTestTaskReportFileWriter implements TaskReportFileWriter
@@ -45,4 +46,10 @@ public class NoopTestTaskReportFileWriter implements 
TaskReportFileWriter
   {
 
   }
+
+  @Override
+  public File getReportsFile(String taskId)
+  {
+    return null;
+  }
 }
diff --git 
a/processing/src/main/java/org/apache/druid/indexer/report/SingleFileTaskReportFileWriter.java
 
b/processing/src/main/java/org/apache/druid/indexer/report/SingleFileTaskReportFileWriter.java
index 9012f4e83a1..efa77fc2e30 100644
--- 
a/processing/src/main/java/org/apache/druid/indexer/report/SingleFileTaskReportFileWriter.java
+++ 
b/processing/src/main/java/org/apache/druid/indexer/report/SingleFileTaskReportFileWriter.java
@@ -68,6 +68,12 @@ public class SingleFileTaskReportFileWriter implements 
TaskReportFileWriter
     this.objectMapper = objectMapper;
   }
 
+  @Override
+  public File getReportsFile(String taskId)
+  {
+    return reportsFile;
+  }
+
   public static void writeReportToStream(
       final ObjectMapper objectMapper,
       final OutputStream outputStream,
diff --git 
a/processing/src/main/java/org/apache/druid/indexer/report/TaskReportFileWriter.java
 
b/processing/src/main/java/org/apache/druid/indexer/report/TaskReportFileWriter.java
index 0cdd0249366..d4f1c6fd959 100644
--- 
a/processing/src/main/java/org/apache/druid/indexer/report/TaskReportFileWriter.java
+++ 
b/processing/src/main/java/org/apache/druid/indexer/report/TaskReportFileWriter.java
@@ -21,6 +21,8 @@ package org.apache.druid.indexer.report;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 
+import javax.annotation.Nullable;
+import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
 
@@ -31,4 +33,10 @@ public interface TaskReportFileWriter
   OutputStream openReportOutputStream(String taskId) throws IOException;
 
   void setObjectMapper(ObjectMapper objectMapper);
+
+  /**
+   * Returns the reports file for the given taskId. Returns null if writer 
does not write reports to any file.
+   */
+  @Nullable
+  File getReportsFile(String taskId);
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to