SOLR-10269 MetricHandler JSON output was incorrect.

This commit is contained in:
Andrzej Bialecki 2017-03-13 20:29:22 +01:00
parent c8bad8c10a
commit e3a0b428fd
3 changed files with 13 additions and 7 deletions

View File

@ -235,6 +235,8 @@ Bug Fixes
* SOLR-9838: "inc" atomic update doesn't respect default field value (hoss, Amrit Sarkar, Ishan Chattopadhyaya) * SOLR-9838: "inc" atomic update doesn't respect default field value (hoss, Amrit Sarkar, Ishan Chattopadhyaya)
* SOLR-10269: MetricsHandler JSON output incorrect. (ab)
Optimizations Optimizations
---------------------- ----------------------

View File

@ -38,6 +38,7 @@ import com.codahale.metrics.Snapshot;
import com.codahale.metrics.Timer; import com.codahale.metrics.Timer;
import org.apache.solr.common.SolrInputDocument; import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.metrics.AggregateMetric; import org.apache.solr.metrics.AggregateMetric;
/** /**
@ -117,12 +118,12 @@ public class MetricUtils {
MetricFilter mustMatchFilter, boolean skipHistograms, MetricFilter mustMatchFilter, boolean skipHistograms,
boolean skipAggregateValues, boolean skipAggregateValues,
Map<String, Object> metadata) { Map<String, Object> metadata) {
NamedList result = new NamedList(); NamedList result = new SimpleOrderedMap();
toNamedMaps(registry, shouldMatchFilters, mustMatchFilter, skipHistograms, skipAggregateValues, (k, v) -> { toNamedMaps(registry, shouldMatchFilters, mustMatchFilter, skipHistograms, skipAggregateValues, (k, v) -> {
result.add(k, new NamedList(v)); result.add(k, v);
}); });
if (metadata != null && !metadata.isEmpty()) { if (metadata != null && !metadata.isEmpty()) {
result.add("_metadata_", new NamedList(metadata)); result.add("_metadata_", metadata);
} }
return result; return result;
} }

View File

@ -17,6 +17,8 @@
package org.apache.solr.handler.admin; package org.apache.solr.handler.admin;
import java.util.Map;
import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.SolrTestCaseJ4;
import org.apache.solr.common.params.CommonParams; import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.util.NamedList; import org.apache.solr.common.util.NamedList;
@ -48,13 +50,14 @@ public class MetricsHandlerTest extends SolrTestCaseJ4 {
NamedList nl = (NamedList) values.get("solr.core.collection1"); NamedList nl = (NamedList) values.get("solr.core.collection1");
assertNotNull(nl); assertNotNull(nl);
assertNotNull(nl.get("SEARCHER.new.errors")); // counter type assertNotNull(nl.get("SEARCHER.new.errors")); // counter type
assertNotNull(((NamedList) nl.get("SEARCHER.new.errors")).get("count")); assertNotNull(((Map) nl.get("SEARCHER.new.errors")).get("count"));
assertEquals(0L, ((NamedList) nl.get("SEARCHER.new.errors")).get("count")); // response wasn't serialized so we get here whatever MetricUtils produced instead of NamedList
assertEquals(0L, ((Map) nl.get("SEARCHER.new.errors")).get("count"));
nl = (NamedList) values.get("solr.node"); nl = (NamedList) values.get("solr.node");
assertNotNull(nl.get("CONTAINER.cores.loaded")); // int gauge assertNotNull(nl.get("CONTAINER.cores.loaded")); // int gauge
assertEquals(1, ((NamedList) nl.get("CONTAINER.cores.loaded")).get("value")); assertEquals(1, ((Map) nl.get("CONTAINER.cores.loaded")).get("value"));
assertNotNull(nl.get("ADMIN./admin/authorization.clientErrors")); // timer type assertNotNull(nl.get("ADMIN./admin/authorization.clientErrors")); // timer type
assertEquals(5, ((NamedList) nl.get("ADMIN./admin/authorization.clientErrors")).size()); assertEquals(5, ((Map) nl.get("ADMIN./admin/authorization.clientErrors")).size());
resp = new SolrQueryResponse(); resp = new SolrQueryResponse();
handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", CommonParams.WT, "json", "group", "jvm,jetty"), resp); handler.handleRequestBody(req(CommonParams.QT, "/admin/metrics", CommonParams.WT, "json", "group", "jvm,jetty"), resp);