{"record":{"id":"a680d2e4c1b7efcb","repo":"pinpoint-apm/pinpoint","slug":"operand-is-null","errorCode":null,"errorMessage":"operand is null","messagePattern":"operand is null","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/instrument/matcher/DefaultMultiClassBasedMatcher.java","lineNumber":49,"sourceCode":"    private final MatcherOperand matcherOperand;\n\n    DefaultMultiClassBasedMatcher(final List<String> baseClassNames) {\n        this(baseClassNames, null);\n    }\n\n    DefaultMultiClassBasedMatcher(final List<String> baseClassNames, final MatcherOperand additional) {\n        if (CollectionUtils.isEmpty(baseClassNames)) {\n            throw new IllegalArgumentException(\"basePackageNames must not be empty\");\n        }\n        this.baseClassNames = baseClassNames;\n\n        this.matcherOperand = getMatcherOperand(baseClassNames, additional);\n    }\n\n    private MatcherOperand getMatcherOperand(List<String> baseClassNames, MatcherOperand additional) {\n        MatcherOperand operand = joinOr(baseClassNames);\n        if (operand == null) {\n            throw new IllegalStateException(\"operand is null\");\n        }\n        if (additional == null) {\n            return operand;\n        }\n        // (class OR ...) AND additional\n        operand = operand.and(additional);\n        return operand;\n    }\n\n    private MatcherOperand joinOr(List<String> baseClassNames) {\n        MatcherOperand operand = null;\n        for (String baseClassName : baseClassNames) {\n            if (operand == null) {\n                operand = new ClassInternalNameMatcherOperand(baseClassName);\n            } else {\n                // class OR ...\n                final MatcherOperand classMatcherOperand = new ClassInternalNameMatcherOperand(baseClassName);\n                operand = operand.or(classMatcherOperand);","sourceCodeStart":31,"sourceCodeEnd":67,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/instrument/matcher/DefaultMultiClassBasedMatcher.java#L31-L67","documentation":"Guard in DefaultMultiClassBasedMatcher.getMatcherOperand: joining the class-name matcher operands produced null (no valid operand could be derived from baseClassNames), so the matcher cannot be assembled. It indicates the operand-building helper returned null for the given inputs.","triggerScenarios":"Thrown at agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/instrument/matcher/DefaultMultiClassBasedMatcher.java:49 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify baseClassNames entries are non-empty valid class names","Avoid passing only blank/null entries that collapse the OR-join to null","Upgrade the pinpoint agent version in case of a matcher operand building bug"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}