Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
4.3.1
-
None
Description
Today's BK client API generates entryId and LedgerHandle for the caller.
While this is very convenient and makes the life of caller very simple and easy,
this model may not be very suitable where application would like to have
better control.
In order to facilitate applications/users of BK aspiring to have more control
following enhancements are proposed for BK client API:
- API enhancement to accept entryID:
Enhance BK client API to pass entryId as an input and the caller must guarantee the following:
- entryIds are never duplicated
- entryIds are sequential starting from 0.
- entryIds have no holes.
- API enhancement to accept LedgerHandle
Applications are allowed to pass-in ledgerId provided:
- ledgerId is unique within the cluster.
- Or even better, if using GUID (128 bit) virtually guarantees universal
uniqueness. - Need to bypass current ledgerId generation logic.
- Allow multiple entities (threads/processes) write to the ledger as long as
there is only one writer at the given instance of time.
- Currently ledgerHandle interface accepts byteArray as input, but sockets
use byteBuffer. We will add additional functions to the new classes to
accept both byteBuffers and byteArrays.
- Sijie suggested to create a new classes that extents existing classes to accept LedgerId and entryId as inputs.This avoids any confusion with existing interfaces, and makes it explicit.