[DISCUSS] Inconsistency in Handle based APIs - Specifically "close"
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:
sync: close, getId, getLedgerMetadata
ReadHandle has the following methods:
async: read, readUnconfirmed, readLastAddConfirmed,
sync: isClosed, getLength, getLastAddConfirmed
WriteHandle has the following methods:
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
What are your thoughts?