Steve Rowe created ZOOKEEPER-2383:
-------------------------------------

             Summary: Startup race in ZooKeeperServer
                 Key: ZOOKEEPER-2383
                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2383
             Project: ZooKeeper
          Issue Type: Bug
          Components: jmx, server
    Affects Versions: 3.4.8
            Reporter: Steve Rowe


In attempting to upgrade Solr's ZooKeeper dependency from 3.4.6 to 3.4.8 
(SOLR-8724) I ran into test failures where attempts to create a node in a newly 
started standalone ZooKeeperServer were failing because of an assertion in 
MBeanRegistry.

ZooKeeperServer.startup() first sets up its request processor chain then 
registers itself in JMX, but if a connection comes in before the server's JMX 
registration happens, registration of the connection will fail because it trips 
the assertion that (effectively) its parent (the server) has already registered 
itself.

{code:java|title=ZooKeeperServer.java}
    public synchronized void startup() {
        if (sessionTracker == null) {
            createSessionTracker();
        }
        startSessionTracker();
        setupRequestProcessors();

        registerJMX();

        state = State.RUNNING;
        notifyAll();
    }
{code}

{code:java|title=MBeanRegistry.java}
    public void register(ZKMBeanInfo bean, ZKMBeanInfo parent)
        throws JMException
    {
        assert bean != null;
        String path = null;
        if (parent != null) {
            path = mapBean2Path.get(parent);
            assert path != null;
        }
{code}

This problem appears to be new with ZK 3.4.8 - AFAIK Solr never had this issue 
with ZK 3.4.6. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to