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

   ### Search before asking
   
   - [X] I searched in the [issues](https://github.com/apache/pulsar/issues) 
and found nothing similar.
   
   
   ### Version
   
   current master. 
   
   ### Minimal reproduce step
   
   1. enable debug log of pulsar client.
   2. use below code. set `maxRedeliverCount` just to make message fast to go 
to DLQ
   
   ```
   package org.apache.pulsar.client;
   
   import org.apache.pulsar.client.api.Consumer;
   import org.apache.pulsar.client.api.DeadLetterPolicy;
   import org.apache.pulsar.client.api.Message;
   import org.apache.pulsar.client.api.MessageListener;
   import org.apache.pulsar.client.api.PulsarClient;
   import org.apache.pulsar.client.api.PulsarClientException;
   
   import java.util.concurrent.TimeUnit;
   
   public class H {
       public static void main(String[] args) throws PulsarClientException, 
InterruptedException {
           PulsarClient client = PulsarClient.builder()
                   .serviceUrl("pulsar://localhost:6650")
                   .build();
   
           Consumer<byte[]> hello = client.newConsumer()
                   .topic("hello")
                   .subscriptionName("sub")
                   .enableRetry(true)
                   
.deadLetterPolicy(DeadLetterPolicy.builder().maxRedeliverCount(1).build())
                   .messageListener(new MessageListener<byte[]>() {
                       @Override
                       public void received(Consumer<byte[]> consumer, 
Message<byte[]> msg) {
                           try {
                               consumer.reconsumeLater(msg, 1, 
TimeUnit.SECONDS);
                           } catch (PulsarClientException e) {
                               throw new RuntimeException(e);
                           }
                       }
                   })
                   .subscribe();
   
           Thread.sleep(10000);
       }
   }
   ```
   
   you can see a lot `GET_OR_CREATE_SCHEMA_RESPONSE` rpc is send before each 
message resend to broker.
   
   
   17:27:25.489 [main] INFO  org.apache.pulsar.client.impl.ProducerImpl - 
[hello] [standalone-0-16] GetOrCreateSchema request
   17:27:25.489 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.common.protocol.PulsarDecoder - [localhost/127.0.0.1:6650] 
Received cmd GET_OR_CREATE_SCHEMA_RESPONSE
   17:27:25.489 [pulsar-client-io-1-3] INFO  
org.apache.pulsar.client.impl.ProducerImpl - [hello] [standalone-0-16] 
GetOrCreateSchema succeed
   17:27:25.490 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.client.impl.ProducerImpl - [hello] [standalone-0-16] 
Re-Sending message in cnx [id: 0x014f6bed, L:/127.0.0.1:61200 - 
R:localhost/127.0.0.1:6650], sequenceId 995
   17:27:25.492 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.common.protocol.PulsarDecoder - [localhost/127.0.0.1:6650] 
Received cmd SEND_RECEIPT
   17:27:25.492 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.client.impl.ClientCnx - [id: 0x014f6bed, L:/127.0.0.1:61200 - 
R:localhost/127.0.0.1:6650] Got receipt for producer: 0 -- msg: 995 -- id: 
0:3197
   17:27:25.492 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.client.impl.ProducerImpl - [hello] [standalone-0-16] Received 
ack for msg 995 
   17:27:25.492 [main] INFO  org.apache.pulsar.client.impl.ProducerImpl - 
[hello] [standalone-0-16] GetOrCreateSchema request
   17:27:25.492 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.common.protocol.PulsarDecoder - [localhost/127.0.0.1:6650] 
Received cmd GET_OR_CREATE_SCHEMA_RESPONSE
   17:27:25.492 [pulsar-client-io-1-3] INFO  
org.apache.pulsar.client.impl.ProducerImpl - [hello] [standalone-0-16] 
GetOrCreateSchema succeed
   17:27:25.492 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.client.impl.ProducerImpl - [hello] [standalone-0-16] 
Re-Sending message in cnx [id: 0x014f6bed, L:/127.0.0.1:61200 - 
R:localhost/127.0.0.1:6650], sequenceId 996
   17:27:25.494 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.common.protocol.PulsarDecoder - [localhost/127.0.0.1:6650] 
Received cmd SEND_RECEIPT
   17:27:25.494 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.client.impl.ClientCnx - [id: 0x014f6bed, L:/127.0.0.1:61200 - 
R:localhost/127.0.0.1:6650] Got receipt for producer: 0 -- msg: 996 -- id: 
0:3198
   17:27:25.494 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.client.impl.ProducerImpl - [hello] [standalone-0-16] Received 
ack for msg 996 
   17:27:25.494 [main] INFO  org.apache.pulsar.client.impl.ProducerImpl - 
[hello] [standalone-0-16] GetOrCreateSchema request
   17:27:25.495 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.common.protocol.PulsarDecoder - [localhost/127.0.0.1:6650] 
Received cmd GET_OR_CREATE_SCHEMA_RESPONSE
   17:27:25.495 [pulsar-client-io-1-3] INFO  
org.apache.pulsar.client.impl.ProducerImpl - [hello] [standalone-0-16] 
GetOrCreateSchema succeed
   17:27:25.495 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.client.impl.ProducerImpl - [hello] [standalone-0-16] 
Re-Sending message in cnx [id: 0x014f6bed, L:/127.0.0.1:61200 - 
R:localhost/127.0.0.1:6650], sequenceId 997
   17:27:25.497 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.common.protocol.PulsarDecoder - [localhost/127.0.0.1:6650] 
Received cmd SEND_RECEIPT
   17:27:25.497 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.client.impl.ClientCnx - [id: 0x014f6bed, L:/127.0.0.1:61200 - 
R:localhost/127.0.0.1:6650] Got receipt for producer: 0 -- msg: 997 -- id: 
0:3199
   17:27:25.497 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.client.impl.ProducerImpl - [hello] [standalone-0-16] Received 
ack for msg 997 
   17:27:25.497 [main] INFO  org.apache.pulsar.client.impl.ProducerImpl - 
[hello] [standalone-0-16] GetOrCreateSchema request
   17:27:25.498 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.common.protocol.PulsarDecoder - [localhost/127.0.0.1:6650] 
Received cmd GET_OR_CREATE_SCHEMA_RESPONSE
   17:27:25.498 [pulsar-client-io-1-3] INFO  
org.apache.pulsar.client.impl.ProducerImpl - [hello] [standalone-0-16] 
GetOrCreateSchema succeed
   17:27:25.498 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.client.impl.ProducerImpl - [hello] [standalone-0-16] 
Re-Sending message in cnx [id: 0x014f6bed, L:/127.0.0.1:61200 - 
R:localhost/127.0.0.1:6650], sequenceId 998
   17:27:25.500 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.common.protocol.PulsarDecoder - [localhost/127.0.0.1:6650] 
Received cmd SEND_RECEIPT
   17:27:25.500 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.client.impl.ClientCnx - [id: 0x014f6bed, L:/127.0.0.1:61200 - 
R:localhost/127.0.0.1:6650] Got receipt for producer: 0 -- msg: 998 -- id: 
0:3200
   17:27:25.500 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.client.impl.ProducerImpl - [hello] [standalone-0-16] Received 
ack for msg 998 
   17:27:25.500 [main] INFO  org.apache.pulsar.client.impl.ProducerImpl - 
[hello] [standalone-0-16] GetOrCreateSchema request
   17:27:25.500 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.common.protocol.PulsarDecoder - [localhost/127.0.0.1:6650] 
Received cmd GET_OR_CREATE_SCHEMA_RESPONSE
   17:27:25.500 [pulsar-client-io-1-3] INFO  
org.apache.pulsar.client.impl.ProducerImpl - [hello] [standalone-0-16] 
GetOrCreateSchema succeed
   17:27:25.500 [pulsar-client-io-1-3] DEBUG 
org.apache.pulsar.client.impl.ProducerImpl - [hello] [standalone-0-16] 
Re-Sending message in cnx [id: 0x014f6bed, L:/127.0.0.1:61200 - 
R:localhost/127.0.0.1:6650], sequenceId 999
   
   ### What did you expect to see?
   
   the current code double the rpc send to broker when using retry and dlq 
feature. this should not happen and have pressure to  the backend service.
   
   ### What did you see instead?
   
   only send GetOrCreateSchema once.
   
   ### Anything else?
   
   _No response_
   
   ### Are you willing to submit a PR?
   
   - [X] I'm willing to submit a PR!


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to