Hi community I am starting a DISCUSS for "Retry topic should not create for a retry topic."
If we use regex-topic consumer and enable retry, it is possible to create such a topic "persistent://public/default/tp1-sub1-RETRY-sub2-RETRY-sub3-RETRY....". You can reproduce this by using the test below. It probably doesn't make sense to create a RETRY/DLQ topic on RETRY/DLQ. We should avoid this scenario if users use the default configuration (users can enable it if they need it). ```java @Test public void testRetryTopicWillNotCreatedForRetryTopic() throws Exception { final String topic = "persistent://my-property/my-ns/tp1"; Producer<byte[]> producer = pulsarClient.newProducer(Schema.BYTES) .topic(topic) .create(); for (int i = 0; i < 100; i++) { producer.send(String.format("Hello Pulsar [%d]", i).getBytes()); } producer.close(); for (int i =0; i< 10; i++) { Consumer<byte[]> consumer = pulsarClient.newConsumer(Schema.BYTES) .topicsPattern("my-property/my-ns/.*") .subscriptionName("sub" + i) .enableRetry(true) .deadLetterPolicy(DeadLetterPolicy.builder().maxRedeliverCount(2).build()) .subscriptionInitialPosition(SubscriptionInitialPosition.Earliest) .subscribe(); Message<byte[]> message = consumer.receive(); log.info("consumer received message : {} {}", message.getMessageId(), new String(message.getData())); consumer.reconsumeLater(message, 1, TimeUnit.SECONDS); consumer.close(); } Set<String> tps = pulsar.getBrokerService().getTopics().keys().stream().collect(Collectors.toSet()); try { for (String tp : tps) { assertTrue(howManyKeyWordRetryInTopicName(tp, RETRY_GROUP_TOPIC_SUFFIX) <= 1, tp); assertTrue(howManyKeyWordRetryInTopicName(tp, DLQ_GROUP_TOPIC_SUFFIX) <= 1, tp); } } finally { // cleanup. for (String tp : tps){ if (tp.startsWith(topic)) { admin.topics().delete(tp ,true); } } } } private int howManyKeyWordRetryInTopicName(String topicName, String keyWord) { int retryCountInTopicName = 0; String tpCp = topicName; while (true) { int index = tpCp.indexOf(keyWord); if (index < 0) { break; } tpCp = tpCp.substring(index + keyWord.length()); retryCountInTopicName++; } return retryCountInTopicName; } ``` Thanks Yubiao Feng