You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by GitBox <gi...@apache.org> on 2021/06/02 07:07:33 UTC

[GitHub] [pulsar] tuteng opened a new issue #10776: Invalid topic name when timeout occurs

tuteng opened a new issue #10776:
URL: https://github.com/apache/pulsar/issues/10776


   **Describe the bug**
   If no dead queue name is specified, a dead queue name will be automatically generated when a timeout occurs, which will cause the following exception when a slash appears in the subscription name:
   
   Topic name:
   
   ```
   public/default/sql-test
   ```
   subscription name:
   
   ```
   public/dev/sqs8-0e2bff7e
   ```
   
   dead queue topic name:
   
   ```
   public/default/sql-test-public/dev/sqs8-0e2bff7e-DLQ
   ```
   
   ```
   03:27:50.828 [pulsar-timer-7-1] ERROR org.apache.pulsar.client.impl.ConsumerImpl - Dead letter producer exception with topic: public/default/sql-test-public/dev/sqs8-0e2bff7e-DLQ
   java.util.concurrent.CompletionException: org.apache.pulsar.client.api.PulsarClientException$InvalidTopicNameException: Invalid topic name: 'public/default/sql-test-public/dev/sqs8-0e2bff7e-DLQ'
   	at java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:292) ~[?:1.8.0_292]
   	at java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:308) ~[?:1.8.0_292]
   	at java.util.concurrent.CompletableFuture.uniAccept(CompletableFuture.java:661) ~[?:1.8.0_292]
   	at java.util.concurrent.CompletableFuture.uniAcceptStage(CompletableFuture.java:683) ~[?:1.8.0_292]
   	at java.util.concurrent.CompletableFuture.thenAccept(CompletableFuture.java:2010) ~[?:1.8.0_292]
   	at org.apache.pulsar.client.impl.ConsumerImpl.processPossibleToDLQ(ConsumerImpl.java:1694) ~[java-instance.jar:?]
   	at org.apache.pulsar.client.impl.ConsumerImpl.lambda$getRedeliveryMessageIdData$31(ConsumerImpl.java:1666) ~[java-instance.jar:?]
   	at java.lang.Iterable.forEach(Iterable.java:75) ~[?:1.8.0_292]
   	at java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1082) ~[?:1.8.0_292]
   	at org.apache.pulsar.client.impl.ConsumerImpl.getRedeliveryMessageIdData(ConsumerImpl.java:1665) ~[java-instance.jar:?]
   	at org.apache.pulsar.client.impl.ConsumerImpl.lambda$redeliverUnacknowledgedMessages$29(ConsumerImpl.java:1630) ~[java-instance.jar:?]
   	at java.lang.Iterable.forEach(Iterable.java:75) [?:1.8.0_292]
   	at org.apache.pulsar.client.impl.ConsumerImpl.redeliverUnacknowledgedMessages(ConsumerImpl.java:1629) [java-instance.jar:?]
   	at org.apache.pulsar.client.impl.UnAckedMessageTracker$2.run(UnAckedMessageTracker.java:145) [java-instance.jar:?]
   	at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:672) [java-instance.jar:?]
   	at io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:747) [java-instance.jar:?]
   	at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:472) [java-instance.jar:?]
   	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [java-instance.jar:?]
   	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_292]
   Caused by: org.apache.pulsar.client.api.PulsarClientException$InvalidTopicNameException: Invalid topic name: 'public/default/sql-test-public/dev-yyang/sqs8-0e2bff7e-DLQ'
   	at org.apache.pulsar.client.impl.PulsarClientImpl.createProducerAsync(PulsarClientImpl.java:289) ~[java-instance.jar:?]
   	at org.apache.pulsar.client.impl.ProducerBuilderImpl.createAsync(ProducerBuilderImpl.java:116) ~[java-instance.jar:?]
   	at org.apache.pulsar.client.impl.ConsumerImpl.initDeadLetterProducerIfNeeded(ConsumerImpl.java:1739) ~[java-instance.jar:?]
   	at org.apache.pulsar.client.impl.ConsumerImpl.processPossibleToDLQ(ConsumerImpl.java:1691) ~[java-instance.jar:?]
   	... 13 more
   ```
   
   **To Reproduce**
   Steps to reproduce the behavior:
   1. Go to '...'
   2. Click on '....'
   3. Scroll down to '....'
   4. See error
   
   **Expected behavior**
   
   Automatically replace illegal characters, such as `/`, when automatically generating dead letter queue names
   
   **Screenshots**
   If applicable, add screenshots to help explain your problem.
   
   **Desktop (please complete the following information):**
    - OS: [e.g. iOS]
   
   **Additional context**
   Add any other context about the problem here.
   


-- 
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.

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



[GitHub] [pulsar] tuteng closed issue #10776: Invalid topic name when timeout occurs

Posted by GitBox <gi...@apache.org>.
tuteng closed issue #10776:
URL: https://github.com/apache/pulsar/issues/10776


   


-- 
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.

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