Search in sources :

Example 11 with TxnID

use of org.apache.pulsar.client.api.transaction.TxnID in project flink by apache.

the class PulsarUnorderedSourceReader method onSplitFinished.

@Override
protected void onSplitFinished(Map<String, PulsarPartitionSplitState> finishedSplitIds) {
    // We don't require new splits, all the splits are pre-assigned by source enumerator.
    if (LOG.isDebugEnabled()) {
        LOG.debug("onSplitFinished event: {}", finishedSplitIds);
    }
    if (coordinatorClient != null) {
        // Commit the uncommitted transaction
        for (Map.Entry<String, PulsarPartitionSplitState> entry : finishedSplitIds.entrySet()) {
            PulsarPartitionSplitState state = entry.getValue();
            TxnID uncommittedTransactionId = state.getUncommittedTransactionId();
            if (uncommittedTransactionId != null) {
                transactionsOfFinishedSplits.add(uncommittedTransactionId);
            }
        }
    }
}
Also used : PulsarPartitionSplitState(org.apache.flink.connector.pulsar.source.split.PulsarPartitionSplitState) TxnID(org.apache.pulsar.client.api.transaction.TxnID) Map(java.util.Map) TreeMap(java.util.TreeMap) SortedMap(java.util.SortedMap)

Example 12 with TxnID

use of org.apache.pulsar.client.api.transaction.TxnID in project flink by apache.

the class PulsarUnorderedSourceReader method notifyCheckpointComplete.

@Override
public void notifyCheckpointComplete(long checkpointId) throws Exception {
    LOG.debug("Committing transactions for checkpoint {}", checkpointId);
    if (coordinatorClient != null) {
        for (Map.Entry<Long, List<TxnID>> entry : transactionsToCommit.entrySet()) {
            Long currentCheckpointId = entry.getKey();
            if (currentCheckpointId > checkpointId) {
                continue;
            }
            List<TxnID> transactions = entry.getValue();
            for (TxnID transaction : transactions) {
                coordinatorClient.commit(transaction);
                transactionsOfFinishedSplits.remove(transaction);
            }
            transactionsToCommit.remove(currentCheckpointId);
        }
    }
}
Also used : TxnID(org.apache.pulsar.client.api.transaction.TxnID) ArrayList(java.util.ArrayList) List(java.util.List) Map(java.util.Map) TreeMap(java.util.TreeMap) SortedMap(java.util.SortedMap)

Example 13 with TxnID

use of org.apache.pulsar.client.api.transaction.TxnID in project flink by apache.

the class TopicProducerRegisterTest method createMessageBuilderForSendingMessage.

@ParameterizedTest
@EnumSource(DeliveryGuarantee.class)
void createMessageBuilderForSendingMessage(DeliveryGuarantee deliveryGuarantee) throws IOException {
    String topic = randomAlphabetic(10);
    operator().createTopic(topic, 8);
    SinkConfiguration configuration = sinkConfiguration(deliveryGuarantee);
    TopicProducerRegister register = new TopicProducerRegister(configuration);
    String message = randomAlphabetic(10);
    register.createMessageBuilder(topic, Schema.STRING).value(message).send();
    if (deliveryGuarantee == EXACTLY_ONCE) {
        List<PulsarCommittable> committables = register.prepareCommit();
        for (PulsarCommittable committable : committables) {
            TxnID txnID = committable.getTxnID();
            TransactionCoordinatorClient coordinatorClient = operator().coordinatorClient();
            coordinatorClient.commit(txnID);
        }
    }
    Message<String> receiveMessage = operator().receiveMessage(topic, Schema.STRING);
    assertEquals(receiveMessage.getValue(), message);
}
Also used : PulsarCommittable(org.apache.flink.connector.pulsar.sink.committer.PulsarCommittable) TxnID(org.apache.pulsar.client.api.transaction.TxnID) SinkConfiguration(org.apache.flink.connector.pulsar.sink.config.SinkConfiguration) TransactionCoordinatorClient(org.apache.pulsar.client.api.transaction.TransactionCoordinatorClient) EnumSource(org.junit.jupiter.params.provider.EnumSource) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest)

Aggregations

TxnID (org.apache.pulsar.client.api.transaction.TxnID)13 TransactionCoordinatorClient (org.apache.pulsar.client.api.transaction.TransactionCoordinatorClient)3 IOException (java.io.IOException)2 ArrayList (java.util.ArrayList)2 Map (java.util.Map)2 SortedMap (java.util.SortedMap)2 TreeMap (java.util.TreeMap)2 PulsarCommittable (org.apache.flink.connector.pulsar.sink.committer.PulsarCommittable)2 PulsarPartitionSplitState (org.apache.flink.connector.pulsar.source.split.PulsarPartitionSplitState)2 FlinkRuntimeException (org.apache.flink.util.FlinkRuntimeException)2 MessageId (org.apache.pulsar.client.api.MessageId)2 ByteArrayInputStream (java.io.ByteArrayInputStream)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 DataInputStream (java.io.DataInputStream)1 DataOutputStream (java.io.DataOutputStream)1 List (java.util.List)1 PulsarTransactionUtils.createTransaction (org.apache.flink.connector.pulsar.common.utils.PulsarTransactionUtils.createTransaction)1 SinkConfiguration (org.apache.flink.connector.pulsar.sink.config.SinkConfiguration)1 StopCursor (org.apache.flink.connector.pulsar.source.enumerator.cursor.StopCursor)1 TopicPartition (org.apache.flink.connector.pulsar.source.enumerator.topic.TopicPartition)1