use of org.apache.kafka.common.requests.DescribeProducersResponse in project kafka by apache.
the class DescribeProducersHandler method handleResponse.
@Override
public ApiResult<TopicPartition, PartitionProducerState> handleResponse(Node broker, Set<TopicPartition> keys, AbstractResponse abstractResponse) {
DescribeProducersResponse response = (DescribeProducersResponse) abstractResponse;
Map<TopicPartition, PartitionProducerState> completed = new HashMap<>();
Map<TopicPartition, Throwable> failed = new HashMap<>();
List<TopicPartition> unmapped = new ArrayList<>();
for (DescribeProducersResponseData.TopicResponse topicResponse : response.data().topics()) {
for (DescribeProducersResponseData.PartitionResponse partitionResponse : topicResponse.partitions()) {
TopicPartition topicPartition = new TopicPartition(topicResponse.name(), partitionResponse.partitionIndex());
Errors error = Errors.forCode(partitionResponse.errorCode());
if (error != Errors.NONE) {
ApiError apiError = new ApiError(error, partitionResponse.errorMessage());
handlePartitionError(topicPartition, apiError, failed, unmapped);
continue;
}
List<ProducerState> activeProducers = partitionResponse.activeProducers().stream().map(activeProducer -> {
OptionalLong currentTransactionFirstOffset = activeProducer.currentTxnStartOffset() < 0 ? OptionalLong.empty() : OptionalLong.of(activeProducer.currentTxnStartOffset());
OptionalInt coordinatorEpoch = activeProducer.coordinatorEpoch() < 0 ? OptionalInt.empty() : OptionalInt.of(activeProducer.coordinatorEpoch());
return new ProducerState(activeProducer.producerId(), activeProducer.producerEpoch(), activeProducer.lastSequence(), activeProducer.lastTimestamp(), coordinatorEpoch, currentTransactionFirstOffset);
}).collect(Collectors.toList());
completed.put(topicPartition, new PartitionProducerState(activeProducers));
}
}
return new ApiResult<>(completed, failed, unmapped);
}
use of org.apache.kafka.common.requests.DescribeProducersResponse in project kafka by apache.
the class KafkaAdminClientTest method buildDescribeProducersResponse.
private DescribeProducersResponse buildDescribeProducersResponse(TopicPartition topicPartition, List<ProducerState> producerStates) {
DescribeProducersResponseData response = new DescribeProducersResponseData();
DescribeProducersResponseData.TopicResponse topicResponse = new DescribeProducersResponseData.TopicResponse().setName(topicPartition.topic());
response.topics().add(topicResponse);
DescribeProducersResponseData.PartitionResponse partitionResponse = new DescribeProducersResponseData.PartitionResponse().setPartitionIndex(topicPartition.partition()).setErrorCode(Errors.NONE.code());
topicResponse.partitions().add(partitionResponse);
partitionResponse.setActiveProducers(producerStates.stream().map(producerState -> new DescribeProducersResponseData.ProducerState().setProducerId(producerState.producerId()).setProducerEpoch(producerState.producerEpoch()).setCoordinatorEpoch(producerState.coordinatorEpoch().orElse(-1)).setLastSequence(producerState.lastSequence()).setLastTimestamp(producerState.lastTimestamp()).setCurrentTxnStartOffset(producerState.currentTransactionStartOffset().orElse(-1L))).collect(Collectors.toList()));
return new DescribeProducersResponse(response);
}
use of org.apache.kafka.common.requests.DescribeProducersResponse in project kafka by apache.
the class DescribeProducersHandlerTest method testCompletedResult.
@Test
public void testCompletedResult() {
TopicPartition topicPartition = new TopicPartition("foo", 5);
DescribeProducersOptions options = new DescribeProducersOptions().brokerId(1);
DescribeProducersHandler handler = newHandler(options);
PartitionResponse partitionResponse = sampleProducerState(topicPartition);
DescribeProducersResponse response = describeProducersResponse(singletonMap(topicPartition, partitionResponse));
Node node = new Node(3, "host", 1);
ApiResult<TopicPartition, PartitionProducerState> result = handler.handleResponse(node, mkSet(topicPartition), response);
assertEquals(mkSet(topicPartition), result.completedKeys.keySet());
assertEquals(emptyMap(), result.failedKeys);
assertEquals(emptyList(), result.unmappedKeys);
PartitionProducerState producerState = result.completedKeys.get(topicPartition);
assertMatchingProducers(partitionResponse, producerState);
}
use of org.apache.kafka.common.requests.DescribeProducersResponse in project kafka by apache.
the class DescribeProducersHandlerTest method describeProducersResponse.
private DescribeProducersResponse describeProducersResponse(Map<TopicPartition, PartitionResponse> partitionResponses) {
DescribeProducersResponseData response = new DescribeProducersResponseData();
Map<String, Map<Integer, PartitionResponse>> partitionResponsesByTopic = CollectionUtils.groupPartitionDataByTopic(partitionResponses);
for (Map.Entry<String, Map<Integer, PartitionResponse>> topicEntry : partitionResponsesByTopic.entrySet()) {
String topic = topicEntry.getKey();
Map<Integer, PartitionResponse> topicPartitionResponses = topicEntry.getValue();
TopicResponse topicResponse = new TopicResponse().setName(topic);
response.topics().add(topicResponse);
for (Map.Entry<Integer, PartitionResponse> partitionEntry : topicPartitionResponses.entrySet()) {
Integer partitionId = partitionEntry.getKey();
PartitionResponse partitionResponse = partitionEntry.getValue();
topicResponse.partitions().add(partitionResponse.setPartitionIndex(partitionId));
}
}
return new DescribeProducersResponse(response);
}
use of org.apache.kafka.common.requests.DescribeProducersResponse in project kafka by apache.
the class DescribeProducersHandlerTest method handleResponseWithError.
private ApiResult<TopicPartition, PartitionProducerState> handleResponseWithError(DescribeProducersOptions options, TopicPartition topicPartition, Errors error) {
DescribeProducersHandler handler = newHandler(options);
DescribeProducersResponse response = buildResponseWithError(topicPartition, error);
Node node = new Node(options.brokerId().orElse(3), "host", 1);
return handler.handleResponse(node, mkSet(topicPartition), response);
}
Aggregations