use of org.apache.kafka.common.requests.OffsetDeleteResponse in project kafka by apache.
the class DeleteConsumerGroupOffsetsHandler method handleResponse.
@Override
public ApiResult<CoordinatorKey, Map<TopicPartition, Errors>> handleResponse(Node coordinator, Set<CoordinatorKey> groupIds, AbstractResponse abstractResponse) {
validateKeys(groupIds);
final OffsetDeleteResponse response = (OffsetDeleteResponse) abstractResponse;
final Errors error = Errors.forCode(response.data().errorCode());
if (error != Errors.NONE) {
final Map<CoordinatorKey, Throwable> failed = new HashMap<>();
final Set<CoordinatorKey> groupsToUnmap = new HashSet<>();
handleGroupError(groupId, error, failed, groupsToUnmap);
return new ApiResult<>(Collections.emptyMap(), failed, new ArrayList<>(groupsToUnmap));
} else {
final Map<TopicPartition, Errors> partitionResults = new HashMap<>();
response.data().topics().forEach(topic -> topic.partitions().forEach(partition -> partitionResults.put(new TopicPartition(topic.name(), partition.partitionIndex()), Errors.forCode(partition.errorCode()))));
return ApiResult.completed(groupId, partitionResults);
}
}
use of org.apache.kafka.common.requests.OffsetDeleteResponse in project kafka by apache.
the class DeleteConsumerGroupOffsetsHandlerTest method handleWithGroupError.
private AdminApiHandler.ApiResult<CoordinatorKey, Map<TopicPartition, Errors>> handleWithGroupError(Errors error) {
DeleteConsumerGroupOffsetsHandler handler = new DeleteConsumerGroupOffsetsHandler(groupId, tps, logContext);
OffsetDeleteResponse response = buildGroupErrorResponse(error);
return handler.handleResponse(new Node(1, "host", 1234), singleton(CoordinatorKey.byGroupId(groupId)), response);
}
use of org.apache.kafka.common.requests.OffsetDeleteResponse in project kafka by apache.
the class KafkaAdminClientTest method testDeleteConsumerGroupOffsets.
@Test
public void testDeleteConsumerGroupOffsets() throws Exception {
// Happy path
final TopicPartition tp1 = new TopicPartition("foo", 0);
final TopicPartition tp2 = new TopicPartition("bar", 0);
final TopicPartition tp3 = new TopicPartition("foobar", 0);
try (AdminClientUnitTestEnv env = new AdminClientUnitTestEnv(mockCluster(1, 0))) {
env.kafkaClient().setNodeApiVersions(NodeApiVersions.create());
env.kafkaClient().prepareResponse(prepareFindCoordinatorResponse(Errors.NONE, env.cluster().controller()));
env.kafkaClient().prepareResponse(new OffsetDeleteResponse(new OffsetDeleteResponseData().setTopics(new OffsetDeleteResponseTopicCollection(Stream.of(new OffsetDeleteResponseTopic().setName("foo").setPartitions(new OffsetDeleteResponsePartitionCollection(Collections.singletonList(new OffsetDeleteResponsePartition().setPartitionIndex(0).setErrorCode(Errors.NONE.code())).iterator())), new OffsetDeleteResponseTopic().setName("bar").setPartitions(new OffsetDeleteResponsePartitionCollection(Collections.singletonList(new OffsetDeleteResponsePartition().setPartitionIndex(0).setErrorCode(Errors.GROUP_SUBSCRIBED_TO_TOPIC.code())).iterator()))).collect(Collectors.toList()).iterator()))));
final DeleteConsumerGroupOffsetsResult errorResult = env.adminClient().deleteConsumerGroupOffsets(GROUP_ID, Stream.of(tp1, tp2).collect(Collectors.toSet()));
assertNull(errorResult.partitionResult(tp1).get());
TestUtils.assertFutureError(errorResult.all(), GroupSubscribedToTopicException.class);
TestUtils.assertFutureError(errorResult.partitionResult(tp2), GroupSubscribedToTopicException.class);
assertThrows(IllegalArgumentException.class, () -> errorResult.partitionResult(tp3));
}
}
use of org.apache.kafka.common.requests.OffsetDeleteResponse in project kafka by apache.
the class DeleteConsumerGroupOffsetsHandlerTest method handleWithPartitionError.
private AdminApiHandler.ApiResult<CoordinatorKey, Map<TopicPartition, Errors>> handleWithPartitionError(Errors error) {
DeleteConsumerGroupOffsetsHandler handler = new DeleteConsumerGroupOffsetsHandler(groupId, tps, logContext);
OffsetDeleteResponse response = buildPartitionErrorResponse(error);
return handler.handleResponse(new Node(1, "host", 1234), singleton(CoordinatorKey.byGroupId(groupId)), response);
}
Aggregations