pinpoint-apm/pinpoint · error · UnsupportedOperationException

unsupported matchingRule:

Error message

unsupported matchingRule:

What it means

Sentinel RuntimeException in getTag: the field's MatchingRule (field.getMatchingRule()) does not match any supported case in the switch, so tag selection cannot proceed — the metric field definition uses an unknown matching rule.

Solutions

  1. Correct the matchingRule in the metric definition configuration
  2. Extend the switch with the missing MatchingRule case
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/service/SystemMetricHostInfoServiceImpl.java:101 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/5d175d7269fc5a52. Report an issue: GitHub.

Appendix: source

Thrown at metric-module/metric/src/main/java/com/navercorp/pinpoint/metric/web/service/SystemMetricHostInfoServiceImpl.java:101

        return metricDefinitionIdList;
    }

    @Override
    public List<String> getCollectedMetricInfoTags(String tenantId, String hostGroupName, String hostName, String metricDefinitionId) {
        String metricName = systemMetricBasicGroupManager.findMetricName(metricDefinitionId);

        return systemMetricHostInfoDao.selectCollectedMetricTags(tenantId, hostGroupName, hostName, metricName);
    }

    @Override
    public List<MetricTag> getTag(MetricDataSearchKey metricDataSearchKey, Field field, List<Tag> tags) {
        MatchingRule matchingRule = field.getMatchingRule();

        return switch (matchingRule) {
            case EXACT_ONE -> getExactMatchingTag(metricDataSearchKey, field);
            case ANY_ONE -> getAnyOneTag(metricDataSearchKey, field);
            case PASSED_ALL -> createTag(metricDataSearchKey, field, tags);
            default -> throw new UnsupportedOperationException("unsupported matchingRule:" + matchingRule);
        };
    }

    private List<MetricTag> getAnyOneTag(MetricDataSearchKey metricDataSearchKey, Field field) {
        long saveTime = getSaveTime();
        MetricTagKey metricTagKey = new MetricTagKey(metricDataSearchKey.getTenantId(),
                metricDataSearchKey.getHostGroupName(), metricDataSearchKey.getHostName(),
                metricDataSearchKey.getMetricName(), field.getName(), saveTime);
        MetricTagCollection metricTagCollection = systemMetricHostInfoDao.selectMetricTagCollection(metricTagKey);

        List<MetricTag> metricTagList = metricTagCollection.getMetricTagList();
        List<MetricTag> anyOneTag = new ArrayList<>();

        if (metricTagList.isEmpty()) {
            return Collections.emptyList();
        }

        MetricTag metricTag = metricTagList.get(0);

View on GitHub (pinned to 744c3d3075)