poorbarcode opened a new issue, #20033:
URL: https://github.com/apache/pulsar/issues/20033

   ### Motivation
   
   #### Just auto-create no-partitioned DLQ/Retry Topic
   If enabled the config `allowAutoTopicCreation,` Pulsar will auto-create a 
topic when the client loads it; After setting config 
`allowAutoTopicCreationType=partitioned, defaultNumPartitions=2`, Pulsar will 
auto-create a partitioned topic(which have two partitions) when the client 
loads it. 
   
   After the above, if using the feature [Retry 
Topic](https://pulsar.apache.org/docs/2.11.x/concepts-messaging/#retry-letter-topic)
 and 
[DLQ](https://pulsar.apache.org/docs/2.11.x/concepts-messaging/#dead-letter-topic)
 enable topic auto-creation, we will get a partitioned DLQ and a partitioned 
Retry Topic like this:
   - `{primary_topic_name}-{sub_name}-DLQ`
     -`{primary_topic_name}-{sub_name}-DLQ-partition-0`
     -`{primary_topic_name}-{sub_name}-DLQ-partition-1`
   - `{primary_topic_name}-{sub_name}-RETRY`
     -`{primary_topic_name}-{sub_name}-RETRY-partition-0`
     -`{primary_topic_name}-{sub_name}-RETRY-partition-1`
   
   I feel that almost all users will not use the multi-partitioned DLQ or 
multi-partitioned Retry topic because there is a bug that causes the above 
behavior to be incorrect, but we have yet to receive any issues about it. This 
bug causes the above behavior to look like this: When the partitioned DLQ is 
auto-created for the topic `tp1-partition-0`, Pulsar will create a partitioned 
topic meta which has two partitioned but only create a topic named 
`{primary_topic_name}-{sub_name}-DLQ,` there is no topic named 
`{primary_topic_name}-{sub_name}-DLQ-partition-x.` Please look at this [PR]( 
https://github.com/apache/pulsar/pull/19841) for a detailed bug description.
   
   So I want to change the behavior to Just auto-create no-partitioned 
DLQ/Retry Topic.
   
   #### Prevent auto-create the DLQ for a DLQ
   Please look at this 
[Discussion](https://lists.apache.org/thread/q1m23ckyy10wvtzy65v8bwqwnh7r0gc8) 
for the detail.
   
   
   
   ### Goal
   
   - Just auto-create no-partitioned DLQ/Retry Topic(with the other words: 
prevent auto-create partitioned DLQ)
   - DLQ/Retry topic should not create for a DLQ/Retry Topic
     - roles:
       - DLQ will not auto-create for a DLQ
       - Retry Topic will not auto-create for a Retry Topic
       - DLQ will not auto-create for a Retry Topic
       - Retry Topic will not auto-create for a DLQ
     - client changes: Clients will not create a DLQ for a DLQ
     - broker changes: rejected the request which wants to auto-create a DLQ 
for a DLQ
   
   ### API Changes
   
   #### CommandSubscribe.java
   ```java
   /**
     * This is an enumeration value with tree options: "standard", "dead 
letter", "retry letter".
     */
   private String topicPurpose;
   ```
   
   #### Properties of Topic
   ```properties
   "purposeOfAutoCreatedTopic": value with tree options: "standard", "dead 
letter", "retry letter"
   ```
   
   Why not use two properties: `isAutoCreated` and `topicPurpose`?
   Because there is a scenario like this: auto-create a topic, and use it as a 
DLQ after a few days, and not use it as a DLQ after a few days, this Topic will 
be allowed to have DLQ/Retry Topic. We only mark the topics created for 
DLQ/Retry purposes
   
   
   ### Implementation
   
   -
   
   ### Security Considerations
   
   -
   
   ### Alternatives
   
   _No response_
   
   ### Anything else?
   
   _No response_


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@pulsar.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to