: Maybe moving the resourceLoader.inform(infoRegistry) call PRIOR to 
: resourceLoader.inform( this ) *or* AFTER latch.countDown() would solve 
: this problem?

If this really is the problem, then a more general purpose solution to 
future proof us against similar problems down the road would probably be 
to get rid of the current "if (config.jmxConfig.enabled)" logic for 
initializing SolrCore.infoRegistry, and instead us something like...

  infoRegistry = new ConcurrentHashMap<String, SolrInfoMBean>();
  ...
  // do all initialization, add things to infoRegistry as needed
  ...
  // done with all initilation, core and all MBeans are fully functional
  if (config.jmxConfig.enabled) {
     Map tmp = infoRegistry;
     infoRegistry = new JmxMonitoredMap<String, SolrInfoMBean>(name, 
config.jmxConfig);
     infoRegistry.putAll(tmp);
  } else {
    log.info("JMX monitoring not detected for core: " + name);
  }

...that way we wouldn't have to worry about any other type of resource 
contention that might happen from the JMX monitor wanting ot get info from 
the MBeans as soon as they are added to the registry.

-Hoss

Reply via email to