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
- Correct the matchingRule in the metric definition configuration
- 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)