{"record":{"id":"7360577ef51174b5","repo":"pinpoint-apm/pinpoint","slug":"unknown-operator-operator-operator","errorCode":null,"errorMessage":"unknown operator. operator=${operator}","messagePattern":"unknown operator\\. operator=(.+?)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/instrument/transformer/DefaultTransformerMatcher.java","lineNumber":294,"sourceCode":"            // cost-based execution plan.\n            firstOperand = rightOperand;\n            secondOperand = leftOperand;\n        }\n\n        if (operand instanceof OrMatcherOperator) {\n            // OR\n            if (match(classLoader, firstOperand, classMetadata)) {\n                return true;\n            }\n            return match(classLoader, secondOperand, classMetadata);\n        } else if (operand instanceof AndMatcherOperator) {\n            // AND\n            if (match(classLoader, firstOperand, classMetadata)) {\n                return match(classLoader, secondOperand, classMetadata);\n            }\n            return false;\n        } else {\n            throw new IllegalArgumentException(\"unknown operator. operator=\" + operator);\n        }\n    }\n}","sourceCodeStart":276,"sourceCodeEnd":297,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/instrument/transformer/DefaultTransformerMatcher.java#L276-L297","documentation":"traversal() dispatches on the operator's type (AND/OR etc.). When the operator's opcode matches none of the supported branch types, it falls into the final else and throws IllegalArgumentException. This means the MatcherOperand carried an operator code unknown to this matcher implementation.","triggerScenarios":"A MatcherOperand whose operator value is outside the set handled by traversal() (JOIN/AND/NOT etc.) is passed to match(); typically from custom or newly-defined operator constants not supported by this Pinpoint version.","commonSituations":"Adding a custom operator code to the matching DSL without extending DefaultTransformerMatcher; mixing operand objects from different Pinpoint versions whose operator constants differ.","solutions":["Print/log the operator value and confirm it is one of MatcherOperator's supported constants (AND/OR/JOIN...)","Extend DefaultTransformerMatcher.traversal() to handle the new operator type, or replace the operand with a supported combination","Align plugin and profiler versions so both sides use the same operator constants"],"exampleFix":"// before\nMatcherOperand op = new MatcherJoinOperator(MatcherOperator.XOR, left, right); // unsupported\n// after\nMatcherOperand op = left.joinAnd(new NotOperand(right)); // express with supported AND/NOT","handlingStrategy":"validation","validationCode":"int opcode = operator.getOperator();\nif (opcode != MatcherOperator.AND && opcode != MatcherOperator.OR && opcode != MatcherOperator.JOIN) {\n    throw new IllegalArgumentException(\"operator not supported by DefaultTransformerMatcher: \" + opcode);\n}","typeGuard":"boolean isSupportedOperator(MatcherOperand op) {\n    return op instanceof MatcherBinaryOperator\n        && (op.getOperator() == MatcherOperator.AND || op.getOperator() == MatcherOperator.OR);\n}","tryCatchPattern":"try {\n    transformerMatcher.match(classLoader, operand, metadata);\n} catch (IllegalArgumentException e) {\n    logger.warn(\"Unsupported operator skipped: {}\", e.getMessage());\n}","preventionTips":["Only use documented MatcherOperator constants","If adding a new operator, extend traversal() in the same change","Pin plugin and profiler to the same version"],"tags":["bytecode-instrumentation","illegal-argument","class-transformer"],"backgroundTag":"invalid-enum-value","analyzedSha":"744c3d3075e595656abb1ae331ad2c0e4c9eb996","analyzedAt":"2026-09-07T18:48:45.289Z","contentChangedAt":"2026-09-07T18:48:45.289Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}