https://github.com/apache/pulsar/pull/26661
Can someone please review this PR.
When a chunked message is expired before it is completely assembled, then it leaks one permit.
This can happen if clients expireTimeOfIncompleteChunkedMessage is aggressive or because of dispatch throttling.
Example:
Message M with chunk c1,c2,c3,c4
In this case if c1, c2 received and then expireTimeOfIncompleteChunkedMessage removes it's context. Then when c3 and c4 is received . C4 will leak one permit. So after such receiverQueueSize/2 leaks, the consumer stalls.
In current situation, it can only be solved by either an admin unload the topic, or the client team restart the consumer app