use of org.apache.kafka.common.message.OffsetForLeaderEpochResponseData in project kafka by apache.
the class OffsetsForLeaderEpochRequest method getErrorResponse.
@Override
public AbstractResponse getErrorResponse(int throttleTimeMs, Throwable e) {
Errors error = Errors.forException(e);
OffsetForLeaderEpochResponseData responseData = new OffsetForLeaderEpochResponseData();
data.topics().forEach(topic -> {
OffsetForLeaderTopicResult topicData = new OffsetForLeaderTopicResult().setTopic(topic.topic());
topic.partitions().forEach(partition -> topicData.partitions().add(new EpochEndOffset().setPartition(partition.partition()).setErrorCode(error.code()).setLeaderEpoch(UNDEFINED_EPOCH).setEndOffset(UNDEFINED_EPOCH_OFFSET)));
responseData.topics().add(topicData);
});
return new OffsetsForLeaderEpochResponse(responseData);
}
use of org.apache.kafka.common.message.OffsetForLeaderEpochResponseData in project kafka by apache.
the class RequestResponseTest method createLeaderEpochResponse.
private OffsetsForLeaderEpochResponse createLeaderEpochResponse() {
OffsetForLeaderEpochResponseData data = new OffsetForLeaderEpochResponseData();
data.topics().add(new OffsetForLeaderTopicResult().setTopic("topic1").setPartitions(asList(new EpochEndOffset().setPartition(0).setErrorCode(Errors.NONE.code()).setLeaderEpoch(1).setEndOffset(0), new EpochEndOffset().setPartition(1).setErrorCode(Errors.NONE.code()).setLeaderEpoch(1).setEndOffset(1))));
data.topics().add(new OffsetForLeaderTopicResult().setTopic("topic2").setPartitions(singletonList(new EpochEndOffset().setPartition(2).setErrorCode(Errors.NONE.code()).setLeaderEpoch(1).setEndOffset(1))));
return new OffsetsForLeaderEpochResponse(data);
}
use of org.apache.kafka.common.message.OffsetForLeaderEpochResponseData in project kafka by apache.
the class OffsetForLeaderEpochClientTest method prepareOffsetForLeaderEpochResponse.
private static OffsetsForLeaderEpochResponse prepareOffsetForLeaderEpochResponse(TopicPartition tp, Errors error, int leaderEpoch, long endOffset) {
OffsetForLeaderEpochResponseData data = new OffsetForLeaderEpochResponseData();
OffsetForLeaderTopicResult topic = new OffsetForLeaderTopicResult().setTopic(tp.topic());
data.topics().add(topic);
topic.partitions().add(new EpochEndOffset().setPartition(tp.partition()).setErrorCode(error.code()).setLeaderEpoch(leaderEpoch).setEndOffset(endOffset));
return new OffsetsForLeaderEpochResponse(data);
}
use of org.apache.kafka.common.message.OffsetForLeaderEpochResponseData in project kafka by apache.
the class OffsetForLeaderEpochClientTest method testUnexpectedEmptyResponse.
@Test
public void testUnexpectedEmptyResponse() {
Map<TopicPartition, SubscriptionState.FetchPosition> positionMap = new HashMap<>();
positionMap.put(tp0, new SubscriptionState.FetchPosition(0, Optional.of(1), new Metadata.LeaderAndEpoch(Optional.empty(), Optional.of(1))));
OffsetsForLeaderEpochClient offsetClient = newOffsetClient();
RequestFuture<OffsetsForLeaderEpochClient.OffsetForEpochResult> future = offsetClient.sendAsyncRequest(Node.noNode(), positionMap);
OffsetsForLeaderEpochResponse resp = new OffsetsForLeaderEpochResponse(new OffsetForLeaderEpochResponseData());
client.prepareResponse(resp);
consumerClient.pollNoWakeup();
OffsetsForLeaderEpochClient.OffsetForEpochResult result = future.value();
assertFalse(result.partitionsToRetry().isEmpty());
assertTrue(result.endOffsets().isEmpty());
}
use of org.apache.kafka.common.message.OffsetForLeaderEpochResponseData in project kafka by apache.
the class OffsetForLeaderEpochClientTest method testEmptyResponse.
@Test
public void testEmptyResponse() {
OffsetsForLeaderEpochClient offsetClient = newOffsetClient();
RequestFuture<OffsetsForLeaderEpochClient.OffsetForEpochResult> future = offsetClient.sendAsyncRequest(Node.noNode(), Collections.emptyMap());
OffsetsForLeaderEpochResponse resp = new OffsetsForLeaderEpochResponse(new OffsetForLeaderEpochResponseData());
client.prepareResponse(resp);
consumerClient.pollNoWakeup();
OffsetsForLeaderEpochClient.OffsetForEpochResult result = future.value();
assertTrue(result.partitionsToRetry().isEmpty());
assertTrue(result.endOffsets().isEmpty());
}
Aggregations