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]