QuorumPeer should unregister only its previsously registered MBeans instead of 
use MBeanRegistry.unregisterAll() method.
------------------------------------------------------------------------------------------------------------------------

                 Key: ZOOKEEPER-1214
                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1214
             Project: ZooKeeper
          Issue Type: Bug
          Components: quorum
            Reporter: César Álvarez Núñez
            Assignee: César Álvarez Núñez


When a QuorumPeer thread dies, it is unregistering *all* ZKMBeanInfo MBeans 
previously registered on its java process; including those that has not been 
registered by itself.

It does not cause any side effect in production environment where each server 
is running on a separate java process; but fails when using 
"org.apache.zookeeper.test.QuorumUtil" to programmatically start up a zookeeper 
server ensemble and use its provided methods to force Disconnected, 
SyncConnected or SessionExpired events; in order to perform some 
basic/functional testing.

Scenario:
* QuorumUtil qU = new QuorumUtil(1); // It creates a 3 servers ensemble.
* qU.startAll(); // Startup all servers: 1 Leader + 2 Followers
* qU.shutdown\(i\); // i is a number from 1 to 3. It shutdown one server.

The last method causes that a QuorumPeer will die, invoking the 
MBeanRegistry.unregisterAll() method.
As a result, *all* ZKMBeanInfo MBeans are unregistered; including those 
belonging to the other QuorumPeer instances.

When trying to restart previous server (qU.restart\(i\)) an AssertionError is 
thrown at MBeanRegistry.register(ZKMBeanInfo bean, ZKMBeanInfo parent) method, 
causing the QuorumPeer thread dead.

To solve it:
* MBeanRegistry.unregisterAll() method has been removed.
* QuorumPeer only unregister its ZKMBeanInfo MBeans.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to