{"record":{"id":"0f2877252410cac9","repo":"pinpoint-apm/pinpoint","slug":"basepackagenames-must-not-be-empty-0f2877","errorCode":null,"errorMessage":"basePackageNames must not be empty ","messagePattern":"basePackageNames must not be empty ","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/instrument/matcher/DefaultMultiPackageBasedMatcher.java","lineNumber":66,"sourceCode":"            throw new IllegalStateException(\"operand is null\");\n        }\n        this.matcherOperand = addOr(operand, additional);\n\n        this.basePackageNames = Collections.unmodifiableList(buildBasePackageName);\n    }\n\n    private MatcherOperand addOr(MatcherOperand operand, MatcherOperand additional) {\n        if (additional == null) {\n            return operand;\n        }\n        // (package OR ...) AND additional\n        operand = operand.and(additional);\n        return operand;\n    }\n\n    private MatcherOperand joinOr(List<String> basePackageNames) {\n        if (basePackageNames.isEmpty()) {\n            throw new IllegalArgumentException(\"basePackageNames must not be empty \");\n        }\n\n        MatcherOperand operandGroup = null;\n        for (String basePackageName : basePackageNames) {\n            if (operandGroup == null) {\n                operandGroup = new PackageInternalNameMatcherOperand(basePackageName);\n            } else {\n                // package OR ...\n                final MatcherOperand packageMatcherOperand = new PackageInternalNameMatcherOperand(basePackageName);\n                operandGroup = operandGroup.or(packageMatcherOperand);\n            }\n        }\n        return operandGroup;\n    }\n\n    private List<String> buildBasePackageNameList(List<String> basePackageNames) {\n        final List<String> list = new ArrayList<>(basePackageNames.size());\n        for (String basePackageName : basePackageNames) {","sourceCodeStart":48,"sourceCodeEnd":84,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/instrument/matcher/DefaultMultiPackageBasedMatcher.java#L48-L84","documentation":"Guard in DefaultMultiPackageBasedMatcher.joinOr: called with a null or empty basePackageNames list, which cannot be OR-joined into a package operand. Fires when the package list is empty at the point of operand construction.","triggerScenarios":"Thrown at agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/instrument/matcher/DefaultMultiPackageBasedMatcher.java:66 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass a non-empty list of package names to joinOr/matcher construction","Validate collections before building package-based matchers"],"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"}