Flavio Paiva Junqueira updated ZOOKEEPER-400:

       Resolution: Fixed
    Fix Version/s: 3.2.0
           Status: Resolved  (was: Patch Available)


> Issues with procedure to close ledger
> -------------------------------------
>                 Key: ZOOKEEPER-400
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-400
>             Project: Zookeeper
>          Issue Type: Bug
>          Components: contrib-bookkeeper
>            Reporter: Flavio Paiva Junqueira
>            Assignee: Flavio Paiva Junqueira
>            Priority: Critical
>             Fix For: 3.2.0
>         Attachments: ZOOKEEPER-400.patch
> When running a few experiments with BookKeeper, I found a couple of issues 
> with closing a ledger:
> * On ClientCBWorker::run(), we should call setAddConfirmed before invoking 
> the callback method. Otherwise, it is possible that an application closes a 
> ledger before ClientCBWorker modifies the last confirmed operation, and the 
> value written to ZooKeeper won't be the last one written;
> * LedgerHandle should write the last add confirmed instead of the last 
> counter. The last attribute counts the operations issued, and we use it to 
> determine the id of the next entry. If an application calls close upon 
> receiving all callbacks, then with the previous modification, the last 
> confirmed add must be equal to (last-1). However, if an application invokes 
> close before receiving all callbacks, the ledger may be left in an 
> inconsistent state because the last entry written to ZooKeeper may be an 
> operation that hasn't completed yet. 
> Although the modifications required are simple, they are important.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

Reply via email to