Search in sources :

Example 6 with TxnID

use of org.apache.pulsar.client.api.transaction.TxnID 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 7 with TxnID

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

the class PulsarPartitionSplitSerializer method deserializePulsarPartitionSplit.

public PulsarPartitionSplit deserializePulsarPartitionSplit(int version, DataInputStream in) throws IOException {
    // partition
    TopicPartition partition = deserializeTopicPartition(version, in);
    // stopCursor
    StopCursor stopCursor = deserializeObject(in);
    // latestConsumedId
    MessageId latestConsumedId = null;
    if (in.readBoolean()) {
        byte[] messageIdBytes = deserializeBytes(in);
        latestConsumedId = MessageId.fromByteArray(messageIdBytes);
    }
    // uncommittedTransactionId
    TxnID uncommittedTransactionId = null;
    if (in.readBoolean()) {
        long mostSigBits = in.readLong();
        long leastSigBits = in.readLong();
        uncommittedTransactionId = new TxnID(mostSigBits, leastSigBits);
    }
    // Creation
    return new PulsarPartitionSplit(partition, stopCursor, latestConsumedId, uncommittedTransactionId);
}
Also used : StopCursor(org.apache.flink.connector.pulsar.source.enumerator.cursor.StopCursor) TxnID(org.apache.pulsar.client.api.transaction.TxnID) TopicPartition(org.apache.flink.connector.pulsar.source.enumerator.topic.TopicPartition) MessageId(org.apache.pulsar.client.api.MessageId)

Example 8 with TxnID

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

the class PulsarCommittableSerializerTest method committableSerDe.

@Test
void committableSerDe() throws IOException {
    String topic = randomAlphabetic(10);
    TxnID txnID = new TxnID(ThreadLocalRandom.current().nextLong(), ThreadLocalRandom.current().nextLong());
    PulsarCommittable committable = new PulsarCommittable(txnID, topic);
    byte[] bytes = INSTANCE.serialize(committable);
    PulsarCommittable committable1 = INSTANCE.deserialize(INSTANCE.getVersion(), bytes);
    assertEquals(committable1, committable);
}
Also used : TxnID(org.apache.pulsar.client.api.transaction.TxnID) Test(org.junit.jupiter.api.Test)

Example 9 with TxnID

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

the class PulsarPartitionSplitSerializer method serializePulsarPartitionSplit.

// ----------------- helper methods --------------
public void serializePulsarPartitionSplit(DataOutputStream out, PulsarPartitionSplit split) throws IOException {
    // partition
    serializeTopicPartition(out, split.getPartition());
    // stopCursor
    serializeObject(out, split.getStopCursor());
    // latestConsumedId
    MessageId latestConsumedId = split.getLatestConsumedId();
    if (latestConsumedId == null) {
        out.writeBoolean(false);
    } else {
        out.writeBoolean(true);
        serializeBytes(out, latestConsumedId.toByteArray());
    }
    // uncommittedTransactionId
    TxnID uncommittedTransactionId = split.getUncommittedTransactionId();
    if (uncommittedTransactionId == null) {
        out.writeBoolean(false);
    } else {
        out.writeBoolean(true);
        out.writeLong(uncommittedTransactionId.getMostSigBits());
        out.writeLong(uncommittedTransactionId.getLeastSigBits());
    }
}
Also used : TxnID(org.apache.pulsar.client.api.transaction.TxnID) MessageId(org.apache.pulsar.client.api.MessageId)

Example 10 with TxnID

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

the class PulsarCommittableSerializer method serialize.

@Override
public byte[] serialize(PulsarCommittable obj) throws IOException {
    try (final ByteArrayOutputStream baos = new ByteArrayOutputStream();
        final DataOutputStream out = new DataOutputStream(baos)) {
        TxnID txnID = obj.getTxnID();
        out.writeLong(txnID.getMostSigBits());
        out.writeLong(txnID.getLeastSigBits());
        out.writeUTF(obj.getTopic());
        out.flush();
        return baos.toByteArray();
    }
}
Also used : TxnID(org.apache.pulsar.client.api.transaction.TxnID) DataOutputStream(java.io.DataOutputStream) ByteArrayOutputStream(java.io.ByteArrayOutputStream)

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