Hi all, I am stumped trying to get statistics from the Solr server. It seems that every time I get the correct SolrInfoMBean, when I look up the proper value (by name) in the NamedList, I get the exact same number back each time. For example, upon start-up the server reports that "2" queries have been performed, and any time I pull the value out of the MBean after that it says "2" even though the stats.jsp reports an increasing number of queries over time. What am I doing wrong? Here is my sample code:
public class SolrUtil { protected static final CoreContainer coreContainer; protected static final String DEFAULT_CORE_NAME = ""; static { CoreContainer.Initializer initializer = new CoreContainer.Initializer(); try { coreContainer = initializer.initialize(); } catch (Exception e) { throw new ExceptionInInitializerError("Can't initialize core container: " + e.getMessage()); } initialize(); } private static SolrCore getCore() { return getCore(DEFAULT_CORE_NAME); } private static SolrCore getCore(String name) { try { return coreContainer.getCore(name); } catch (Exception e) { e.printStackTrace(); } return null; } public static String getSolrInfoMBeanValue(SolrInfoMBean.Category category, String entryName, String statName) { Map<String, SolrInfoMBean> registry = getCore().getInfoRegistry(); for (Map.Entry<String, SolrInfoMBean> entry : registry.entrySet()) { String key = entry.getKey(); SolrInfoMBean solrInfoMBean = entry.getValue(); if ((solrInfoMBean.getCategory() != category) || (!entryName.equals(key.trim()))) { continue; } NamedList<?> nl = solrInfoMBean.getStatistics(); if ((nl != null) && (nl.size() > 0)) { for (int i = 0; i < nl.size(); i++) { if (nl.getName(i).equals(statName)) { return nl.getVal(i).toString(); } } } } return null; } [...I have other methods, that also get the value as a long, etc....] } This code is modeled after the SolrDispatchFilter.java, _info.jsp and stats.jsp. I'd appreciate any help. (And yes, my core is named "".) Sincerely, Daryl.