Yubiao Feng created FLINK-37436: ----------------------------------- Summary: flink-connector-pulsar used a incorrect API when dynamically creating topics by DynamicTopicRouter Key: FLINK-37436 URL: https://issues.apache.org/jira/browse/FLINK-37436 Project: Flink Issue Type: Bug Components: Connectors / Pulsar Reporter: Yubiao Feng
Background 1: dynamically create a Pulsar Topic by Flink connector-pulsar Flink connector-pulsar provided a way to dynamically create a Pulsar Topic when DynamicTopicRouter returns a non-existing one. see also: [flink-connector-pulsar/flink-connector-pulsar/src/main/java/org/apache/flink/connector/pulsar/sink/writer/topic/ProducerRegister.java at main · apache/flink-connector-pulsar|https://github.com/apache/flink-connector-pulsar/blob/main/flink-connector-pulsar/src/main/java/org/apache/flink/connector/pulsar/sink/writer/topic/ProducerRegister.java#L221]. * `pulsarClient.getPartitionsForTopic(topic)` will create a topic automatically if it does not exist. --- Background 2: how dynamically created topics in Pulsar Server - There is a config named `allowAutoTopicCreationType`, which can be set to ` partitioned` or `non-partitioned` - If it was set `partitioned`, Pulsar will create a partitioned topic with `{defaultNumPartitions}` partitions. For example, Pulsar will create topics named `\{tenant}/\{namespace}/\{topic name}-partition-0` and `\{tenant}/\{namespace}/\{topic name}-partition-1`, and create a relationship between them, which indicates they are in a same partitioned topic. - If it was set `non-partitioned`, Pulsar will create a non-partitioned topic. Pulsar will create topics named `\{tenant}/\{namespace}/\{topic name}`, which does not include a suffix `partition-\{num}` --- Issue: - if `pulsarClient.getPartitionsForTopic(topic)` get a param `\{tenant}/\{namespace}/\{topic name}-partition-0`, which includes the suffix `partition-0`, Pulsar will create a non-partitioned topic named `\{tenant}/\{namespace}/\{topic name}-partition-0` - After you call `pulsarClient.getPartitionsForTopic(topic)` with a param `\{tenant}/\{namespace}/\{topic name}-partition-1`, you will get two partitions named `\{tenant}/\{namespace}/\{topic name}-partition-0` and `\{tenant}/\{namespace}/\{topic name}-partition-1`, but there is no relationship record between them. -- This message was sent by Atlassian Jira (v8.20.10#820010)