[ https://issues.apache.org/jira/browse/ZOOKEEPER-400?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12708820#action_12708820 ]
Flavio Paiva Junqueira commented on ZOOKEEPER-400: -------------------------------------------------- Core tests failed again because of problems with the C tests. This issue is unrelated to this patch. In fact, this patch doesn't even modify ZooKeeper core. > 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.