Search in sources :

Example 1 with KafkaPartitionSplitSerializer

use of org.apache.flink.connector.kafka.source.split.KafkaPartitionSplitSerializer in project flink by apache.

the class KafkaSourceEnumStateSerializerTest method testBackwardCompatibility.

@Test
public void testBackwardCompatibility() throws IOException {
    final Set<TopicPartition> topicPartitions = constructTopicPartitions();
    final Map<Integer, Set<KafkaPartitionSplit>> splitAssignments = toSplitAssignments(topicPartitions);
    // Create bytes in the way of KafkaEnumStateSerializer version 0 doing serialization
    final byte[] bytes = SerdeUtils.serializeSplitAssignments(splitAssignments, new KafkaPartitionSplitSerializer());
    // Deserialize above bytes with KafkaEnumStateSerializer version 1 to check backward
    // compatibility
    final KafkaSourceEnumState kafkaSourceEnumState = new KafkaSourceEnumStateSerializer().deserialize(0, bytes);
    assertEquals(topicPartitions, kafkaSourceEnumState.assignedPartitions());
}
Also used : HashSet(java.util.HashSet) Set(java.util.Set) KafkaPartitionSplitSerializer(org.apache.flink.connector.kafka.source.split.KafkaPartitionSplitSerializer) TopicPartition(org.apache.kafka.common.TopicPartition) Test(org.junit.Test)

Example 2 with KafkaPartitionSplitSerializer

use of org.apache.flink.connector.kafka.source.split.KafkaPartitionSplitSerializer in project flink by apache.

the class KafkaSourceEnumStateSerializer method deserialize.

@Override
public KafkaSourceEnumState deserialize(int version, byte[] serialized) throws IOException {
    if (version == CURRENT_VERSION) {
        final Set<TopicPartition> assignedPartitions = deserializeTopicPartitions(serialized);
        return new KafkaSourceEnumState(assignedPartitions);
    }
    // Backward compatibility
    if (version == VERSION_0) {
        Map<Integer, Set<KafkaPartitionSplit>> currentPartitionAssignment = SerdeUtils.deserializeSplitAssignments(serialized, new KafkaPartitionSplitSerializer(), HashSet::new);
        Set<TopicPartition> currentAssignedSplits = new HashSet<>();
        currentPartitionAssignment.forEach((reader, splits) -> splits.forEach(split -> currentAssignedSplits.add(split.getTopicPartition())));
        return new KafkaSourceEnumState(currentAssignedSplits);
    }
    throw new IOException(String.format("The bytes are serialized with version %d, " + "while this deserializer only supports version up to %d", version, CURRENT_VERSION));
}
Also used : TopicPartition(org.apache.kafka.common.TopicPartition) DataInputStream(java.io.DataInputStream) ByteArrayOutputStream(java.io.ByteArrayOutputStream) Collection(java.util.Collection) Set(java.util.Set) IOException(java.io.IOException) HashSet(java.util.HashSet) KafkaPartitionSplitSerializer(org.apache.flink.connector.kafka.source.split.KafkaPartitionSplitSerializer) ByteArrayInputStream(java.io.ByteArrayInputStream) DataOutputStream(java.io.DataOutputStream) SimpleVersionedSerializer(org.apache.flink.core.io.SimpleVersionedSerializer) Map(java.util.Map) SerdeUtils(org.apache.flink.connector.base.source.utils.SerdeUtils) Internal(org.apache.flink.annotation.Internal) KafkaPartitionSplit(org.apache.flink.connector.kafka.source.split.KafkaPartitionSplit) Set(java.util.Set) HashSet(java.util.HashSet) KafkaPartitionSplitSerializer(org.apache.flink.connector.kafka.source.split.KafkaPartitionSplitSerializer) TopicPartition(org.apache.kafka.common.TopicPartition) IOException(java.io.IOException) HashSet(java.util.HashSet)

Aggregations

HashSet (java.util.HashSet)2 Set (java.util.Set)2 KafkaPartitionSplitSerializer (org.apache.flink.connector.kafka.source.split.KafkaPartitionSplitSerializer)2 TopicPartition (org.apache.kafka.common.TopicPartition)2 ByteArrayInputStream (java.io.ByteArrayInputStream)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 DataInputStream (java.io.DataInputStream)1 DataOutputStream (java.io.DataOutputStream)1 IOException (java.io.IOException)1 Collection (java.util.Collection)1 Map (java.util.Map)1 Internal (org.apache.flink.annotation.Internal)1 SerdeUtils (org.apache.flink.connector.base.source.utils.SerdeUtils)1 KafkaPartitionSplit (org.apache.flink.connector.kafka.source.split.KafkaPartitionSplit)1 SimpleVersionedSerializer (org.apache.flink.core.io.SimpleVersionedSerializer)1 Test (org.junit.Test)1