addisonj commented on issue #14082:
URL: https://github.com/apache/pulsar/issues/14082#issuecomment-1029181907


   @anant-ahuja This appears to be a problem with your consumers not 
acknowledging all messages.
   
   To explain, if you look at the `unackedMessages` and `availablePermits` 
together indicate this problem. To explain, see this selection from the topic 
stats:
   
   ```
    {
    ...
           "availablePermits" : 0,
           "unackedMessages" : 3,
   ...
           "connectedSince" : "2022-02-03T00:11:00.17Z",
           "address" : "/10.32.8.9:59458"
         }
   ```
   
   unackedMessages indicates that Pulsar has dispatched messages to this 
consumer, but the consumer has not acknowledged them. unackedMessages 
themselves are not an issue, but, the avaiablePermits is zero which indicates 
to Pulsar that it cannot send any more messages.
   
   The way Pulsar works is that clients dictate when messages can be sent. The 
client does this by sending the broker a "flow" command to tell the broker it 
can send up to some number of messages (refereed to as permits). When a client 
library processes messages and is ready for more, it sends another flow 
command, which gives the broker more permits to send more messages.
   
   You never have to worry about sending flow messges yourself, instead, the 
pulsar client library does it automatically based on when you acknowledge 
messages. However, if your application fails to acknowledge too many messages, 
this can cause issues with the client not sending any more flow commands.
   
   As far as how to fix this, here are a few options:
   
   1. Find the code paths that are resulting in unprocessed messages (usually 
related to error handling or deadlocks in process) and fix those by adding 
error handling or a timeout of process, then either nack the messages or just 
ack the message (depending on your processing semantics)
   2. Use Pulsar consumer "ackTimeout" feature which will send a negative 
acknowledgement (causing redelivery) if processing doesn't happen within some 
period of time
   


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