Search in sources :

Example 1 with TransactionState

use of org.apache.kafka.clients.admin.TransactionState in project kafka by apache.

the class ListTransactionsHandler method handleResponse.

@Override
public ApiResult<AllBrokersStrategy.BrokerKey, Collection<TransactionListing>> handleResponse(Node broker, Set<AllBrokersStrategy.BrokerKey> keys, AbstractResponse abstractResponse) {
    int brokerId = broker.id();
    AllBrokersStrategy.BrokerKey key = requireSingleton(keys, brokerId);
    ListTransactionsResponse response = (ListTransactionsResponse) abstractResponse;
    Errors error = Errors.forCode(response.data().errorCode());
    if (error == Errors.COORDINATOR_LOAD_IN_PROGRESS) {
        log.debug("The `ListTransactions` request sent to broker {} failed because the " + "coordinator is still loading state. Will try again after backing off", brokerId);
        return ApiResult.empty();
    } else if (error == Errors.COORDINATOR_NOT_AVAILABLE) {
        log.debug("The `ListTransactions` request sent to broker {} failed because the " + "coordinator is shutting down", brokerId);
        return ApiResult.failed(key, new CoordinatorNotAvailableException("ListTransactions " + "request sent to broker " + brokerId + " failed because the coordinator is shutting down"));
    } else if (error != Errors.NONE) {
        log.error("The `ListTransactions` request sent to broker {} failed because of an " + "unexpected error {}", brokerId, error);
        return ApiResult.failed(key, error.exception("ListTransactions request " + "sent to broker " + brokerId + " failed with an unexpected exception"));
    } else {
        List<TransactionListing> listings = response.data().transactionStates().stream().map(transactionState -> new TransactionListing(transactionState.transactionalId(), transactionState.producerId(), TransactionState.parse(transactionState.transactionState()))).collect(Collectors.toList());
        return ApiResult.completed(key, listings);
    }
}
Also used : CoordinatorNotAvailableException(org.apache.kafka.common.errors.CoordinatorNotAvailableException) Logger(org.slf4j.Logger) AbstractResponse(org.apache.kafka.common.requests.AbstractResponse) Collection(java.util.Collection) Set(java.util.Set) ListTransactionsRequest(org.apache.kafka.common.requests.ListTransactionsRequest) Collectors(java.util.stream.Collectors) ListTransactionsRequestData(org.apache.kafka.common.message.ListTransactionsRequestData) ArrayList(java.util.ArrayList) TransactionState(org.apache.kafka.clients.admin.TransactionState) ListTransactionsResponse(org.apache.kafka.common.requests.ListTransactionsResponse) List(java.util.List) LogContext(org.apache.kafka.common.utils.LogContext) ListTransactionsOptions(org.apache.kafka.clients.admin.ListTransactionsOptions) Errors(org.apache.kafka.common.protocol.Errors) TransactionListing(org.apache.kafka.clients.admin.TransactionListing) Node(org.apache.kafka.common.Node) Errors(org.apache.kafka.common.protocol.Errors) ListTransactionsResponse(org.apache.kafka.common.requests.ListTransactionsResponse) CoordinatorNotAvailableException(org.apache.kafka.common.errors.CoordinatorNotAvailableException) TransactionListing(org.apache.kafka.clients.admin.TransactionListing)

Example 2 with TransactionState

use of org.apache.kafka.clients.admin.TransactionState in project kafka by apache.

the class ListTransactionsHandler method buildRequest.

@Override
public ListTransactionsRequest.Builder buildRequest(int brokerId, Set<AllBrokersStrategy.BrokerKey> keys) {
    ListTransactionsRequestData request = new ListTransactionsRequestData();
    request.setProducerIdFilters(new ArrayList<>(options.filteredProducerIds()));
    request.setStateFilters(options.filteredStates().stream().map(TransactionState::toString).collect(Collectors.toList()));
    return new ListTransactionsRequest.Builder(request);
}
Also used : TransactionState(org.apache.kafka.clients.admin.TransactionState) ListTransactionsRequestData(org.apache.kafka.common.message.ListTransactionsRequestData)

Example 3 with TransactionState

use of org.apache.kafka.clients.admin.TransactionState in project kafka by apache.

the class ListTransactionsHandlerTest method testBuildRequestWithFilteredState.

@Test
public void testBuildRequestWithFilteredState() {
    int brokerId = 1;
    BrokerKey brokerKey = new BrokerKey(OptionalInt.of(brokerId));
    TransactionState filteredState = TransactionState.ONGOING;
    ListTransactionsOptions options = new ListTransactionsOptions().filterStates(singleton(filteredState));
    ListTransactionsHandler handler = new ListTransactionsHandler(options, logContext);
    ListTransactionsRequest request = handler.buildRequest(brokerId, singleton(brokerKey)).build();
    assertEquals(Collections.singletonList(filteredState.toString()), request.data().stateFilters());
    assertEquals(Collections.emptyList(), request.data().producerIdFilters());
}
Also used : TransactionState(org.apache.kafka.clients.admin.TransactionState) ListTransactionsOptions(org.apache.kafka.clients.admin.ListTransactionsOptions) ListTransactionsRequest(org.apache.kafka.common.requests.ListTransactionsRequest) BrokerKey(org.apache.kafka.clients.admin.internals.AllBrokersStrategy.BrokerKey) Test(org.junit.jupiter.api.Test)

Aggregations

TransactionState (org.apache.kafka.clients.admin.TransactionState)3 ListTransactionsOptions (org.apache.kafka.clients.admin.ListTransactionsOptions)2 ListTransactionsRequestData (org.apache.kafka.common.message.ListTransactionsRequestData)2 ListTransactionsRequest (org.apache.kafka.common.requests.ListTransactionsRequest)2 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 List (java.util.List)1 Set (java.util.Set)1 Collectors (java.util.stream.Collectors)1 TransactionListing (org.apache.kafka.clients.admin.TransactionListing)1 BrokerKey (org.apache.kafka.clients.admin.internals.AllBrokersStrategy.BrokerKey)1 Node (org.apache.kafka.common.Node)1 CoordinatorNotAvailableException (org.apache.kafka.common.errors.CoordinatorNotAvailableException)1 Errors (org.apache.kafka.common.protocol.Errors)1 AbstractResponse (org.apache.kafka.common.requests.AbstractResponse)1 ListTransactionsResponse (org.apache.kafka.common.requests.ListTransactionsResponse)1 LogContext (org.apache.kafka.common.utils.LogContext)1 Test (org.junit.jupiter.api.Test)1 Logger (org.slf4j.Logger)1