[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-400?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12708965#action_12708965
 ] 

Benjamin Reed commented on ZOOKEEPER-400:
-----------------------------------------

+1 good catch!

> 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
>         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