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);
}
}
}
}
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);
}
}
}
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);
}
Aggregations