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)