BewareMyPower opened a new pull request, #16285:
URL: https://github.com/apache/pulsar/pull/16285

   Fixes https://github.com/apache/pulsar/issues/15976
   
   ### Motivation
   
   Currently even if the producer, consumer, or reader failed to
   create, it would still be added to the producers or consumers in
   `Client`. `Client::close` first closes the internal producers and
   consumers, if the producers or consumers to close include failed
   producers or consumers, `Client::close` would return
   `ResultAlreadyClosed`. Even worse, closing a failed partitioned producer
   might stuck.
   
   It also makes the Python test `test_listener_name_client` flaky because
   `client.close()` will throw an exception if the underlying
   `Client::close` call in C++ client doesn't return `ResultOk`.
   
   ### Modifications
   
   - Only adding the created producer or consumer to the internal list of
     `Client` after the creation succeeded.
   - Add `ClientTest.testWrongListener` to verify when producer, consumer,
     reader failed to create, the internal producer list and consumer list
     are both empty. And `client.close()` would return `ResultOk`.
   
   ### Documentation
   
   Check the box below or label this PR directly.
   
   Need to update docs? 
   
   - [ ] `doc-required` 
   (Your PR needs to update docs and you will update later)
     
   - [x] `doc-not-needed` 
   (Please explain why)
     
   - [ ] `doc` 
   (Your PR contains doc changes)
   
   - [ ] `doc-complete`
   (Docs have been already added)


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