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

  1. Ensure the metric query's tag filters match tags actually collected
  2. Rebuild uniqueTagGroupList from the same source as the incoming tagGroup
  3. 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)