pinpoint-apm/pinpoint · error · RuntimeException
cann't find tagGroup
Error message
cann't find tagGroup
What it means
Sentinel RuntimeException from findTagGroup: no tag group in uniqueTagGroupList equals the requested tagGroup, i.e. metric data arrived whose tag combination was not among the pre-computed unique groups — typically inconsistent tags between metric and tag collections.
Solutions
- Ensure the metric query's tag filters match tags actually collected
- Rebuild uniqueTagGroupList from the same source as the incoming tagGroup
- Return an empty/unknown group instead of throwing when tags are merely stale
Defensive patterns
Strategy: fallback
When it happens
Trigger: Thrown at metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/service/SystemMetricDataServiceImpl.java:181 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/1eff0d5bbbd41b26.
Report an issue: GitHub.
Appendix: source
Thrown at metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/service/SystemMetricDataServiceImpl.java:181
List<MetricValueGroup<?>> metricValueGroupList = new ArrayList<>(valueList.size());
for (Map.Entry<TagGroup, List<MetricValue<?>>> entry : metricValueGroupMap.entrySet()) {
String groupName = entry.getKey().groupName();
List<MetricValue<?>> value = entry.getValue();
MetricValueGroup<?> group = new MetricValueGroup(value, groupName);
metricValueGroupList.add(group);
}
return metricValueGroupList;
}
private TagGroup findTagGroup(List<TagGroup> uniqueTagGroupList, TagGroup tagGroup) {
for (TagGroup tg : uniqueTagGroupList) {
if (equalsTagGroup(tg, tagGroup)) {
return tg;
}
}
throw new RuntimeException("cann't find tagGroup");
}
private List<TagGroup> createUniqueTagGroupList(List<MetricValue<? extends Number>> metricValueList) {
List<TagGroup> uniqueTagGroupList = new ArrayList<>();
for (MetricValue<?> metricValue : metricValueList) {
boolean containTagGroup = false;
List<Tag> tagList = metricValue.getTagList();
TagGroup newTagGroup = new TagGroup(tagList);
for (TagGroup tagGroup : uniqueTagGroupList) {
if (equalsTagGroup(tagGroup, newTagGroup)) {
containTagGroup = true;
}
}
if (containTagGroup == false) {View on GitHub (pinned to 744c3d3075)