mirror of https://github.com/apache/kafka.git
HOTFIX: make sure all ConsumerGroupServices get closed (#15801)
Some services are not closed, so our CI print following error. org.opentest4j.AssertionFailedError: Found 16 unexpected threads during @BeforeAll: `kafka-admin-client-thread | adminclient-287,kafka-admin-client-thread | adminclient-276,kafka-admin-client-thread | adminclient-271,kafka-admin-client-thread | adminclient-293,kafka-admin-client-thread | adminclient-281,kafka-admin-client-thread | adminclient-302,kafka-admin-client-thread | adminclient-334,kafka-admin-client-thread | adminclient-323,kafka-admin-client-thread | adminclient-257,kafka-admin-client-thread | adminclient-336,kafka-admin-client-thread | adminclient-308,kafka-admin-client-thread | adminclient-263,kafka-admin-client-thread | adminclient-273,kafka-admin-client-thread | adminclient-278,kafka-admin-client-thread | adminclient-283,kafka-admin-client-thread | adminclient-317` ==> expected: <true> but was: <false> #15679 use AfterEach to release service. However, the test cases having multi consumerConfigs will create a lot of services in testing. Hence, the intermediate servers are not closed. Reviewers: Luke Chen <showuon@gmail.com>
This commit is contained in:
parent
864744ffd4
commit
4e23378aa8
|
@ -40,7 +40,6 @@ import org.apache.kafka.common.serialization.ByteArrayDeserializer;
|
|||
import org.apache.kafka.common.serialization.ByteArraySerializer;
|
||||
import org.apache.kafka.common.utils.Utils;
|
||||
import org.apache.kafka.coordinator.group.GroupCoordinatorConfig;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Tag;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
|
@ -70,7 +69,6 @@ public class DeleteOffsetsConsumerGroupCommandIntegrationTest {
|
|||
public static final String GROUP = "test.group";
|
||||
private final ClusterInstance clusterInstance;
|
||||
|
||||
private ConsumerGroupCommand.ConsumerGroupService consumerGroupService;
|
||||
private final Iterable<Map<String, Object>> consumerConfigs;
|
||||
|
||||
DeleteOffsetsConsumerGroupCommandIntegrationTest(ClusterInstance clusterInstance) {
|
||||
|
@ -81,22 +79,15 @@ public class DeleteOffsetsConsumerGroupCommandIntegrationTest {
|
|||
: Collections.singletonList(Collections.emptyMap());
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
public void tearDown() {
|
||||
if (consumerGroupService != null) {
|
||||
consumerGroupService.close();
|
||||
}
|
||||
}
|
||||
|
||||
@ClusterTest
|
||||
public void testDeleteOffsetsNonExistingGroup() {
|
||||
String group = "missing.group";
|
||||
String topic = "foo:1";
|
||||
setupConsumerGroupService(getArgs(group, topic));
|
||||
|
||||
try (ConsumerGroupCommand.ConsumerGroupService consumerGroupService = consumerGroupService(getArgs(group, topic))) {
|
||||
Entry<Errors, Map<TopicPartition, Throwable>> res = consumerGroupService.deleteOffsets(group, Collections.singletonList(topic));
|
||||
assertEquals(Errors.GROUP_ID_NOT_FOUND, res.getKey());
|
||||
}
|
||||
}
|
||||
|
||||
@ClusterTest
|
||||
public void testDeleteOffsetsOfStableConsumerGroupWithTopicPartition() {
|
||||
|
@ -171,8 +162,8 @@ public class DeleteOffsetsConsumerGroupCommandIntegrationTest {
|
|||
};
|
||||
}
|
||||
|
||||
private void setupConsumerGroupService(String[] args) {
|
||||
consumerGroupService = new ConsumerGroupCommand.ConsumerGroupService(
|
||||
private static ConsumerGroupCommand.ConsumerGroupService consumerGroupService(String[] args) {
|
||||
return new ConsumerGroupCommand.ConsumerGroupService(
|
||||
ConsumerGroupCommandOptions.fromArgs(args),
|
||||
Collections.singletonMap(AdminClientConfig.RETRIES_CONFIG, Integer.toString(Integer.MAX_VALUE))
|
||||
);
|
||||
|
@ -187,8 +178,7 @@ public class DeleteOffsetsConsumerGroupCommandIntegrationTest {
|
|||
produceRecord();
|
||||
this.withConsumerGroup(() -> {
|
||||
String topic = inputPartition >= 0 ? inputTopic + ":" + inputPartition : inputTopic;
|
||||
setupConsumerGroupService(getArgs(GROUP, topic));
|
||||
|
||||
try (ConsumerGroupCommand.ConsumerGroupService consumerGroupService = consumerGroupService(getArgs(GROUP, topic))) {
|
||||
Entry<Errors, Map<TopicPartition, Throwable>> res = consumerGroupService.deleteOffsets(GROUP, Collections.singletonList(topic));
|
||||
Errors topLevelError = res.getKey();
|
||||
Map<TopicPartition, Throwable> partitions = res.getValue();
|
||||
|
@ -201,6 +191,7 @@ public class DeleteOffsetsConsumerGroupCommandIntegrationTest {
|
|||
assertNull(partitions.get(tp));
|
||||
else
|
||||
assertEquals(expectedError.exception(), partitions.get(tp).getCause());
|
||||
}
|
||||
}, isStable, consumerConfig);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue