Search in sources :

Example 1 with PartitionProducerState

use of org.apache.kafka.clients.admin.DescribeProducersResult.PartitionProducerState 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);
}
Also used : DescribeProducersOptions(org.apache.kafka.clients.admin.DescribeProducersOptions) ProducerState(org.apache.kafka.clients.admin.ProducerState) AbstractResponse(org.apache.kafka.common.requests.AbstractResponse) HashMap(java.util.HashMap) DescribeProducersRequest(org.apache.kafka.common.requests.DescribeProducersRequest) OptionalInt(java.util.OptionalInt) ApiError(org.apache.kafka.common.requests.ApiError) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) OptionalLong(java.util.OptionalLong) DescribeProducersResponse(org.apache.kafka.common.requests.DescribeProducersResponse) LogContext(org.apache.kafka.common.utils.LogContext) Map(java.util.Map) TopicPartition(org.apache.kafka.common.TopicPartition) PartitionProducerState(org.apache.kafka.clients.admin.DescribeProducersResult.PartitionProducerState) Logger(org.slf4j.Logger) DescribeProducersRequestData(org.apache.kafka.common.message.DescribeProducersRequestData) Collection(java.util.Collection) InvalidTopicException(org.apache.kafka.common.errors.InvalidTopicException) Set(java.util.Set) Collectors(java.util.stream.Collectors) CollectionUtils(org.apache.kafka.common.utils.CollectionUtils) List(java.util.List) DescribeProducersResponseData(org.apache.kafka.common.message.DescribeProducersResponseData) TopicAuthorizationException(org.apache.kafka.common.errors.TopicAuthorizationException) Errors(org.apache.kafka.common.protocol.Errors) Node(org.apache.kafka.common.Node) Collections(java.util.Collections) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) PartitionProducerState(org.apache.kafka.clients.admin.DescribeProducersResult.PartitionProducerState) OptionalInt(java.util.OptionalInt) DescribeProducersResponse(org.apache.kafka.common.requests.DescribeProducersResponse) DescribeProducersResponseData(org.apache.kafka.common.message.DescribeProducersResponseData) Errors(org.apache.kafka.common.protocol.Errors) TopicPartition(org.apache.kafka.common.TopicPartition) ProducerState(org.apache.kafka.clients.admin.ProducerState) PartitionProducerState(org.apache.kafka.clients.admin.DescribeProducersResult.PartitionProducerState) OptionalLong(java.util.OptionalLong) ApiError(org.apache.kafka.common.requests.ApiError)

Example 2 with PartitionProducerState

use of org.apache.kafka.clients.admin.DescribeProducersResult.PartitionProducerState 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);
}
Also used : PartitionResponse(org.apache.kafka.common.message.DescribeProducersResponseData.PartitionResponse) TopicPartition(org.apache.kafka.common.TopicPartition) Node(org.apache.kafka.common.Node) PartitionProducerState(org.apache.kafka.clients.admin.DescribeProducersResult.PartitionProducerState) DescribeProducersOptions(org.apache.kafka.clients.admin.DescribeProducersOptions) DescribeProducersResponse(org.apache.kafka.common.requests.DescribeProducersResponse) Test(org.junit.jupiter.api.Test)

Example 3 with PartitionProducerState

use of org.apache.kafka.clients.admin.DescribeProducersResult.PartitionProducerState in project kafka by apache.

the class DescribeProducersHandlerTest method assertFatalError.

private Throwable assertFatalError(TopicPartition topicPartition, Errors error) {
    ApiResult<TopicPartition, PartitionProducerState> result = handleResponseWithError(new DescribeProducersOptions(), topicPartition, error);
    assertEquals(emptyMap(), result.completedKeys);
    assertEquals(emptyList(), result.unmappedKeys);
    assertEquals(mkSet(topicPartition), result.failedKeys.keySet());
    return result.failedKeys.get(topicPartition);
}
Also used : TopicPartition(org.apache.kafka.common.TopicPartition) PartitionProducerState(org.apache.kafka.clients.admin.DescribeProducersResult.PartitionProducerState) DescribeProducersOptions(org.apache.kafka.clients.admin.DescribeProducersOptions)

Example 4 with PartitionProducerState

use of org.apache.kafka.clients.admin.DescribeProducersResult.PartitionProducerState in project kafka by apache.

the class DescribeProducersHandlerTest method testFatalNotLeaderErrorIfStaticMapped.

@Test
public void testFatalNotLeaderErrorIfStaticMapped() {
    TopicPartition topicPartition = new TopicPartition("foo", 5);
    DescribeProducersOptions options = new DescribeProducersOptions().brokerId(1);
    ApiResult<TopicPartition, PartitionProducerState> result = handleResponseWithError(options, topicPartition, Errors.NOT_LEADER_OR_FOLLOWER);
    assertEquals(emptyMap(), result.completedKeys);
    assertEquals(emptyList(), result.unmappedKeys);
    assertEquals(mkSet(topicPartition), result.failedKeys.keySet());
    Throwable exception = result.failedKeys.get(topicPartition);
    assertTrue(exception instanceof NotLeaderOrFollowerException);
}
Also used : TopicPartition(org.apache.kafka.common.TopicPartition) PartitionProducerState(org.apache.kafka.clients.admin.DescribeProducersResult.PartitionProducerState) NotLeaderOrFollowerException(org.apache.kafka.common.errors.NotLeaderOrFollowerException) DescribeProducersOptions(org.apache.kafka.clients.admin.DescribeProducersOptions) Test(org.junit.jupiter.api.Test)

Example 5 with PartitionProducerState

use of org.apache.kafka.clients.admin.DescribeProducersResult.PartitionProducerState in project kafka by apache.

the class TransactionsCommandTest method expectDescribeProducers.

private void expectDescribeProducers(TopicPartition topicPartition, long producerId, short producerEpoch, long lastTimestamp, OptionalInt coordinatorEpoch, OptionalLong txnStartOffset) {
    PartitionProducerState partitionProducerState = new PartitionProducerState(singletonList(new ProducerState(producerId, producerEpoch, 500, lastTimestamp, coordinatorEpoch, txnStartOffset)));
    DescribeProducersResult result = Mockito.mock(DescribeProducersResult.class);
    Mockito.when(result.all()).thenReturn(completedFuture(singletonMap(topicPartition, partitionProducerState)));
    Mockito.when(admin.describeProducers(Collections.singletonList(topicPartition), new DescribeProducersOptions())).thenReturn(result);
}
Also used : ProducerState(org.apache.kafka.clients.admin.ProducerState) PartitionProducerState(org.apache.kafka.clients.admin.DescribeProducersResult.PartitionProducerState) PartitionProducerState(org.apache.kafka.clients.admin.DescribeProducersResult.PartitionProducerState) DescribeProducersResult(org.apache.kafka.clients.admin.DescribeProducersResult) DescribeProducersOptions(org.apache.kafka.clients.admin.DescribeProducersOptions)

Aggregations

PartitionProducerState (org.apache.kafka.clients.admin.DescribeProducersResult.PartitionProducerState)10 DescribeProducersOptions (org.apache.kafka.clients.admin.DescribeProducersOptions)7 TopicPartition (org.apache.kafka.common.TopicPartition)7 ProducerState (org.apache.kafka.clients.admin.ProducerState)4 Test (org.junit.jupiter.api.Test)4 DescribeProducersResult (org.apache.kafka.clients.admin.DescribeProducersResult)3 ArrayList (java.util.ArrayList)2 List (java.util.List)2 Node (org.apache.kafka.common.Node)2 DescribeProducersResponse (org.apache.kafka.common.requests.DescribeProducersResponse)2 Arrays.asList (java.util.Arrays.asList)1 Collection (java.util.Collection)1 Collections (java.util.Collections)1 Collections.singletonList (java.util.Collections.singletonList)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 Map (java.util.Map)1 OptionalInt (java.util.OptionalInt)1 OptionalLong (java.util.OptionalLong)1 Set (java.util.Set)1