Flavio Paiva Junqueira updated ZOOKEEPER-387:

    Attachment: ZOOKEEPER-387.patch

> closeLedger shouldn't shut down all QuorumEngines
> -------------------------------------------------
>                 Key: ZOOKEEPER-387
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-387
>             Project: Zookeeper
>          Issue Type: Bug
>          Components: contrib-bookkeeper
>            Reporter: Flavio Paiva Junqueira
>            Assignee: Flavio Paiva Junqueira
>         Attachments: ZOOKEEPER-387.patch
> We had initially assumed one ledger open at a time, and LedgerRecoverMonitor 
> reads and closes a ledger without instantiating a QuorumEngine. Consequently, 
> when closing a ledger, we have to shut down a QuorumEngine only if there is 
> one. A poor way of implementing it is by having a for loop that iterates over 
> all available QuorumEngines and shut them down. Given the assumptions of one 
> ledger at a time and no QuorumEngine for LedgerRecoveryMonitor, this 
> implementation works. However, as we move to a more flexible model in which 
> multiple ledgers can be open and closed at arbitrary times, the for loop 
> choice no longer works. 
> The attached patch fixes this problem by just shutting down the QuorumEngine 
> instance corresponding to the ledger being closed, and it checks if a 
> QuorumEngine exists before submitting a STOP operation. The patch also 
> includes a test that opens four ledger, and then sequentially writes to the 
> each ledger and closes it.

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