closeLedger shouldn't shut down all QuorumEngines

                 Key: ZOOKEEPER-387
             Project: Zookeeper
          Issue Type: Bug
          Components: contrib-bookkeeper
            Reporter: 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