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

capistrant 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 cf7d2320798 Simplify response of /handoff API, fix test flakiness 
(#18884)
cf7d2320798 is described below

commit cf7d2320798021e5be74850b40b8be622865f7e5
Author: Kashif Faraz <[email protected]>
AuthorDate: Mon Jan 5 20:15:43 2026 +0530

    Simplify response of /handoff API, fix test flakiness (#18884)
    
    * Simplify response of /handoff API, fix test flakiness
    
    * Add test coverage
---
 docs/api-reference/supervisor-api.md               |  5 ++---
 .../embedded/indexing/KafkaFaultToleranceTest.java |  9 ++++-----
 .../testing/embedded/server/FaultyClusterTest.java |  1 +
 .../overlord/supervisor/SupervisorResource.java    |  4 +---
 .../supervisor/SupervisorResourceTest.java         | 22 ++++++++++++++++++++++
 5 files changed, 30 insertions(+), 11 deletions(-)

diff --git a/docs/api-reference/supervisor-api.md 
b/docs/api-reference/supervisor-api.md
index 87d7ea65e4e..20fdb37a55f 100644
--- a/docs/api-reference/supervisor-api.md
+++ b/docs/api-reference/supervisor-api.md
@@ -3662,9 +3662,8 @@ Content-Type: application/json
 <details>
   <summary>202 Accepted</summary>
 
-```json
-{}
-```
+*Empty response*
+
 </details>
 
 ### Shut down a supervisor
diff --git 
a/embedded-tests/src/test/java/org/apache/druid/testing/embedded/indexing/KafkaFaultToleranceTest.java
 
b/embedded-tests/src/test/java/org/apache/druid/testing/embedded/indexing/KafkaFaultToleranceTest.java
index abb2993098c..3951a0cc54a 100644
--- 
a/embedded-tests/src/test/java/org/apache/druid/testing/embedded/indexing/KafkaFaultToleranceTest.java
+++ 
b/embedded-tests/src/test/java/org/apache/druid/testing/embedded/indexing/KafkaFaultToleranceTest.java
@@ -19,7 +19,6 @@
 
 package org.apache.druid.testing.embedded.indexing;
 
-import com.fasterxml.jackson.core.type.TypeReference;
 import org.apache.druid.indexer.TaskStatusPlus;
 import org.apache.druid.indexing.overlord.supervisor.SupervisorSpec;
 import org.apache.druid.java.util.common.StringUtils;
@@ -65,7 +64,7 @@ public class KafkaFaultToleranceTest extends KafkaTestBase
     verifyRowCount(totalRecords);
   }
 
-  @ParameterizedTest
+  @ParameterizedTest(name = "useTransactions={0}")
   @ValueSource(booleans = {true, false})
   public void test_supervisorRecovers_afterOverlordRestart(boolean 
useTransactions) throws Exception
   {
@@ -107,7 +106,7 @@ public class KafkaFaultToleranceTest extends KafkaTestBase
     totalRecords += publish1kRecords(topic, useTransactions);
   }
 
-  @ParameterizedTest
+  @ParameterizedTest(name = "useTransactions={0}")
   @ValueSource(booleans = {true, false})
   public void test_supervisorRecovers_afterSuspendResume(boolean 
useTransactions)
   {
@@ -121,7 +120,7 @@ public class KafkaFaultToleranceTest extends KafkaTestBase
     totalRecords += publish1kRecords(topic, useTransactions);
   }
 
-  @ParameterizedTest
+  @ParameterizedTest(name = "useTransactions={0}")
   @ValueSource(booleans = {true, false})
   public void test_supervisorRecovers_afterChangeInTopicPartitions(boolean 
useTransactions)
   {
@@ -149,7 +148,7 @@ public class KafkaFaultToleranceTest extends KafkaTestBase
     cluster.callApi().serviceClient().onLeaderOverlord(
         mapper -> new RequestBuilder(HttpMethod.POST, path)
             .jsonContent(mapper, Map.of("taskGroupIds", List.of(0, 1))),
-        new TypeReference<>() {}
+        null
     );
 
     // Wait for the handoff notice to be processed
diff --git 
a/embedded-tests/src/test/java/org/apache/druid/testing/embedded/server/FaultyClusterTest.java
 
b/embedded-tests/src/test/java/org/apache/druid/testing/embedded/server/FaultyClusterTest.java
index a1a1622f535..aefa2c94477 100644
--- 
a/embedded-tests/src/test/java/org/apache/druid/testing/embedded/server/FaultyClusterTest.java
+++ 
b/embedded-tests/src/test/java/org/apache/druid/testing/embedded/server/FaultyClusterTest.java
@@ -87,6 +87,7 @@ public class FaultyClusterTest extends KafkaTestBase
     cluster.callApi().postSupervisor(supervisorSpec.createSuspendedSpec());
     kafkaServer.deleteTopic(topic);
 
+    cluster.callApi().waitForAllSegmentsToBeAvailable(dataSource, coordinator, 
broker);
     verifyRowCount(recordCount);
 
     // Verify that pending segments are not cleaned up
diff --git 
a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java
 
b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java
index b0ed0423818..6b145be07e4 100644
--- 
a/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java
+++ 
b/indexing-service/src/main/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResource.java
@@ -432,9 +432,7 @@ public class SupervisorResource
         manager -> {
           try {
             if (manager.handoffTaskGroupsEarly(id, taskGroupIds)) {
-              return Response.status(Response.Status.ACCEPTED)
-                             .entity(Map.of()) // empty json object to allow 
deserialization by the client
-                             .build();
+              return Response.status(Response.Status.ACCEPTED).build();
             } else {
               return Response.status(Response.Status.NOT_FOUND)
                              .entity(ImmutableMap.of("error", 
StringUtils.format("Supervisor was not found [%s]", id)))
diff --git 
a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResourceTest.java
 
b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResourceTest.java
index 0737722d341..6c099a53b3a 100644
--- 
a/indexing-service/src/test/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResourceTest.java
+++ 
b/indexing-service/src/test/java/org/apache/druid/indexing/overlord/supervisor/SupervisorResourceTest.java
@@ -1374,6 +1374,28 @@ public class SupervisorResourceTest extends 
EasyMockSupport
     EasyMock.verify(newSpec.getIoConfig());
   }
 
+  @Test
+  public void test_handoffTaskGroups_returnsAccepted()
+  {
+    final SupervisorSpec spec = createTestSpec(1, 1);
+    final SupervisorResource.HandoffTaskGroupsRequest handoffRequest
+        = new SupervisorResource.HandoffTaskGroupsRequest(List.of(0));
+
+    EasyMock.expect(taskMaster.getSupervisorManager())
+            .andReturn(Optional.of(supervisorManager))
+            .times(1);
+    EasyMock.expect(supervisorManager.handoffTaskGroupsEarly(spec.getId(), 
handoffRequest.getTaskGroupIds()))
+            .andReturn(true)
+            .times(1);
+    replayAll();
+
+    final Response response = 
supervisorResource.handoffTaskGroups(spec.getId(), handoffRequest);
+    Assert.assertEquals(202, response.getStatus());
+    Assert.assertNull(response.getEntity());
+
+    verifyAll();
+  }
+
   private TestSeekableStreamSupervisorSpec createTestSpec(Integer taskCount, 
int taskCountMin)
   {
     HashMap<String, Object> autoScalerConfig = new HashMap<>();


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

Reply via email to