You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flink.apache.org by "Yubiao Feng (Jira)" <ji...@apache.org> on 2025/03/07 11:49:00 UTC

[jira] [Created] (FLINK-37436) flink-connector-pulsar used a incorrect API when dynamically creating topics by DynamicTopicRouter

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)