Search in sources :

Example 1 with PulsarPartitionSplitState

use of org.apache.flink.connector.pulsar.source.split.PulsarPartitionSplitState in project flink by apache.

the class PulsarOrderedSourceReader 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);
    }
    for (Map.Entry<String, PulsarPartitionSplitState> entry : finishedSplitIds.entrySet()) {
        PulsarPartitionSplitState state = entry.getValue();
        MessageId latestConsumedId = state.getLatestConsumedId();
        if (latestConsumedId != null) {
            cursorsOfFinishedSplits.put(state.getPartition(), latestConsumedId);
        }
    }
}
Also used : PulsarPartitionSplitState(org.apache.flink.connector.pulsar.source.split.PulsarPartitionSplitState) HashMap(java.util.HashMap) ConcurrentMap(java.util.concurrent.ConcurrentMap) Map(java.util.Map) ConcurrentHashMap(java.util.concurrent.ConcurrentHashMap) TreeMap(java.util.TreeMap) SortedMap(java.util.SortedMap) MessageId(org.apache.pulsar.client.api.MessageId)

Example 2 with PulsarPartitionSplitState

use of org.apache.flink.connector.pulsar.source.split.PulsarPartitionSplitState in project flink by apache.

the class PulsarUnorderedPartitionSplitReader method snapshotState.

public PulsarPartitionSplitState snapshotState(long checkpointId) {
    PulsarPartitionSplitState state = new PulsarPartitionSplitState(registeredSplit);
    // Avoiding NP problem when Pulsar don't get the message before Flink checkpoint.
    if (uncommittedTransaction != null) {
        TxnID txnID = uncommittedTransaction.getTxnID();
        this.uncommittedTransaction = newTransaction();
        state.setUncommittedTransactionId(txnID);
    }
    return state;
}
Also used : PulsarPartitionSplitState(org.apache.flink.connector.pulsar.source.split.PulsarPartitionSplitState) TxnID(org.apache.pulsar.client.api.transaction.TxnID)

Example 3 with PulsarPartitionSplitState

use of org.apache.flink.connector.pulsar.source.split.PulsarPartitionSplitState 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)

Aggregations

PulsarPartitionSplitState (org.apache.flink.connector.pulsar.source.split.PulsarPartitionSplitState)3 Map (java.util.Map)2 SortedMap (java.util.SortedMap)2 TreeMap (java.util.TreeMap)2 TxnID (org.apache.pulsar.client.api.transaction.TxnID)2 HashMap (java.util.HashMap)1 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)1 ConcurrentMap (java.util.concurrent.ConcurrentMap)1 MessageId (org.apache.pulsar.client.api.MessageId)1