Hi folks, I'm currently changing some parts of pulsar to use the new APIs and the inconsistency in the close api has raised its head again, so I'm restarting this discussion.
Handle has the following methods: async: asyncClose sync: close, getId, getLedgerMetadata ReadHandle has the following methods: async: read, readUnconfirmed, readLastAddConfirmed, tryReadLastAddConfirmed, readLastAddConfirmedAndEntry sync: isClosed, getLength, getLastAddConfirmed WriteHandle has the following methods: async: append sync: getLastAddPushed Close is inconsistent with the rest of the methods for a number of reasons. 1. No other async method uses the async* pattern. 2. All other sync methods are querying local data and are sideeffect free. Close can trigger I/O. 3. Each other method has one way be being called, close has two. I'm not going to suggest a solution to this right now, but any solution which gets rid of this inconsistency would be acceptable. New APIs shouldn't have inconsistencies like this from the outset, and this is a blocker for me for moving the API away from the Unstable annotations. What are your thoughts? Cheers, Ivan