jai1 opened a new issue #551: Problems in lookup flow in C++ Client URL: https://github.com/apache/incubator-pulsar/issues/551 # Issues:- 1. **Client Stops Doing Lookups** If the ClientConnection object is not destroyed within first backoff time (0.1 seconds) then the consumer/producer will no longer attempt to reconnect to the broker - which may lead to Timeouts and queue full in case of producer and backlog in case of consumer. 2. **Locking inconsistencies in Lookup Logic** In the following methods, we check/change the clientConnection_ weakPtr outside a lock - ProducerImpl.disconnectProducer() - ConsumerImpl.disconnectConsumer() - HandlerBase.grabCnx() - ProducerImpl.handlCreateProducer() - ConsumerImpl.handlCreateConsumer() 3. **Duplicate lookups happen on the client side** (A) During a graceful shutdown, the broker sends CLOSE_PRODUCER / CLOSE_CONSUMER command to the client, which triggers the reconnection logic. (B) After the connection is closed the ClientConnection.close() also triggers the reconnection logic for all registered consumers/producers. If (A) doesn't complete before (B) then lookups and CREATE_PRODUCER / CREATE_CONSUMER commands are sent twice - this is not a functional issue because the broker returns success for the duplicate command but this leads a twice the required number of lookups. 4. **Duplicate CLOSE_PRODUCER and CLOSE_CONSUMER triggered by the broker** Not sure why this is happening or it's side effects. ** Note: ** Will attach the relevant log files with the Pull Request for the fixes. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected]
With regards, Apache Git Services
