Thank you Sijie for summarizing and thanks to the community for helping in
this important enhancement to BookKeeper

I am convinced that as JV pointed out we need to declare at ledger creation
time that the ledger is going to perform no-sync writes.

I think we need an explicit declaration currently to make things "clear" to
the developer which is using the LedgerHandle API even and ledger creation
tyime.

The case is that we are going to forbid "striping" ledgers (ensemble size >
quorum size) for no-sync writes in the first implementation:
- one option is to  fail at the first no-sync addEntry, but this will be
really uncomfortable because usually the ack/write/ensemble sizes are
configured by the admin, and there will be configurations in which errors
will come out only after starting the system.
- the second option is to make the developer explicitly enable no-sync
writes at creation time and fail the creation of the ledger if the
requested combination of options if not possible

I am not sure that the changes to the bookie internals are a Client-API
matter, maybe we can leverage custom metadata (as JV said) in order to make
the bookie handle ledgers in a different manner, this way will be always
open as custom metadata are already here.

JV preferred the ledger-type approach, the dual solution is to introduce a
list of "capabilities" or "ledger options".
I think that this ability to perform no-syc writes is so important that
"custom metadata" is not the good place to declare it, same for "ledger
type"

So I am proposing to add a boolean 'allowNoSyncWrites" at ledger creation
time, without writing in to ledger metadata on ZK,
I think that if further improvements will need ledger metadata changes we
will do.

I have updated the BP-14 document, I have added an "Open issues" footer
with the open points,
please add comments and I will correct the document as soon as possible.
Enrico
2017-08-30 1:24 GMT+02:00 Sijie Guo <[EMAIL PROTECTED]>:
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB