pinpoint-apm/pinpoint · error · RuntimeException
No Such Metric
Error message
No Such Metric
What it means
Sentinel RuntimeException in SystemMetricDataServiceImpl.selectAll: a metric field's data type is neither the recognized counter (Long) nor gauge (Double) type, so no DAO branch applies — an unregistered/unsupported metric data type in the basic group definition.
Solutions
- Extend SystemMetricDataTypeService to map the metric's field type
- Fix the metric definition YML so field types match supported types
- Add a new DAO branch for the missing data type
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/service/SystemMetricDataServiceImpl.java:133 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07).
Data as JSON: /api/errors/7d38956c98019152.
Report an issue: GitHub.
Appendix: source
Thrown at metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/service/SystemMetricDataServiceImpl.java:133
return metricValueList;
} catch (Throwable e) {
throw new RuntimeException(e);
}
}
private List<QueryResult<Number>> selectAll(MetricDataSearchKey metricDataSearchKey, Metric elementOfBasicGroupList, List<Tag> tags) {
List<QueryResult<? extends Number>> invokeList = new ArrayList<>();
for (Field field : elementOfBasicGroupList.getFields()) {
MetricDataName metricDataName = new MetricDataName(metricDataSearchKey.getMetricName(), field.getName());
MetricDataType metricDataType = systemMetricDataTypeService.getMetricDataType(metricDataName);
List<MetricTag> metricTagList = systemMetricHostInfoService.getTag(metricDataSearchKey, field, tags);
for (MetricTag metricTag : metricTagList) {
if (MetricDataType.DOUBLE == metricDataType) {
CompletableFuture<List<DataPoint<Double>>> doubleFuture = systemMetricDoubleDao.getAsyncSampledSystemMetricData(metricDataSearchKey, metricTag);
invokeList.add(new QueryResult<>(metricDataType, doubleFuture, metricTag));
} else {
throw new RuntimeException("No Such Metric");
}
}
}
return (List<QueryResult<Number>>)(List<?>) invokeList;
}
private record QueryResult<T extends Number>(MetricDataType type, CompletableFuture<List<DataPoint<T>>> future, MetricTag tag) {
}
private List<MetricValueGroup<? extends Number>> groupingMetricValue(List<MetricValue<?>> metricValueList, GroupingRule groupingRule) {
if (GroupingRule.TAG == groupingRule) {
return groupingByTag(metricValueList);
}
throw new UnsupportedOperationException("unsupported groupingRule :" + groupingRule);
}
private List<MetricValueGroup<? extends Number>> groupingByTag(List<MetricValue<? extends Number>> metricValueList) {View on GitHub (pinned to 744c3d3075)