{"record":{"id":"645fb4381ce6b3fa","repo":"apache/skywalking","slug":"unknown-dsl-catalog-wirename","errorCode":null,"errorMessage":"Unknown DSL catalog: {wireName}","messagePattern":"Unknown DSL catalog: (.+?)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/dsl/Catalog.java","lineNumber":56,"sourceCode":"\n    @Getter\n    private final String wireName;\n\n    Catalog(final String wireName) {\n        this.wireName = wireName;\n    }\n\n    /**\n     * Resolve {@code wireName} to the matching enum. Throws {@link IllegalArgumentException} on\n     * an unknown catalog so callers fail fast rather than silently dropping the rule.\n     */\n    public static Catalog of(final String wireName) {\n        for (final Catalog c : values()) {\n            if (c.wireName.equals(wireName)) {\n                return c;\n            }\n        }\n        throw new IllegalArgumentException(\"Unknown DSL catalog: \" + wireName);\n    }\n}\n","sourceCodeStart":38,"sourceCodeEnd":59,"githubUrl":"https://github.com/apache/skywalking/blob/102af09b4a56064e22050dded10e2c52e490d040/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/dsl/Catalog.java#L38-L59","documentation":"Catalog.of() resolves the wire name of a DSL rule's catalog (the 'catalog' field in MAL/LAL/OAL-style rule YAML shipped to the OAP) to the Catalog enum. An unrecognized wire name means the rule was authored against a different vocabulary or a newer/older OAP version; rather than silently dropping the rule, the resolver throws IllegalArgumentException. This is the fail-fast contract documented on the method itself.","triggerScenarios":"A DSL configuration file or runtime rule payload (e.g. via the rule-management API / agent-rule sync) provides a 'catalog' string that does not equal any Catalog enum's wireName (comparison is exact, case-sensitive c.wireName.equals(wireName)).","commonSituations":"Upgrading/downgrading OAP while keeping custom MAL/LAL rules whose catalog vocabulary changed; typos or wrong casing in the catalog field; hand-writing a rule with an invented catalog value; tooling generating rules from an outdated schema.","solutions":["Check the error message for the offending wireName and correct it to a catalog the running OAP version supports (exact casing).","Look up the accepted values in the Catalog enum of the OAP version you deploy (values() are compared literally).","If the rule comes from a newer feature, upgrade OAP to a version that knows that catalog before shipping the rule.","Re-apply the corrected rule via the same channel (file or runtime rule API) and restart/reload."],"exampleFix":"# before (rule yaml)\ncatalog: METER_RULEZ\n\n# after\ncatalog: METER_RULE","handlingStrategy":"validation","validationCode":"// Whitelist catalogs before applying a rule\nSet<String> known = Arrays.stream(Catalog.values()).map(Catalog::getWireName).collect(Collectors.toSet());\nif (!known.contains(rule.getCatalog())) {\n    throw new IllegalArgumentException(\"unsupported catalog: \" + rule.getCatalog());\n}","typeGuard":"// Java: resolve to enum safely\nOptional<Catalog> c = Arrays.stream(Catalog.values())\n    .filter(x -> x.getWireName().equals(wireName)).findFirst();\nif (!c.isPresent()) { /* reject rule with clear operator message */ }","tryCatchPattern":"try { Catalog c = Catalog.of(wireName); } catch (IllegalArgumentException e) { log.error(\"rejecting rule with unknown catalog {}\", wireName); /* quarantine rule, alert operator */ }","preventionTips":["Pin rule schema versions to the deployed OAP version.","Validate rules against the Catalog enum in the rule-management tooling before push.","Treat catalog names as case-sensitive constants, not free text."],"tags":["dsl","configuration","validation","rule-management","startup"],"backgroundTag":null,"analyzedSha":"102af09b4a56064e22050dded10e2c52e490d040","analyzedAt":"2026-08-14T10:47:52.647Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}