{"record":{"id":"355f438af76ce405","repo":"pinpoint-apm/pinpoint","slug":"pathseparator-must-not-be-empty","errorCode":null,"errorMessage":"pathSeparator must not be empty","messagePattern":"pathSeparator 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/config/ExcludePathFilter.java","lineNumber":51,"sourceCode":" */\npublic class ExcludePathFilter implements Filter<String> {\n\n    public static final String DEFAULT_PATH_SEAPARATOR = \"/\";\n    public static final String DEFAULT_FORMAT_SEPARATOR = \",\";\n\n    protected final PathMatcher[] excludePathMatchers;\n\n    public ExcludePathFilter(String excludePathFormatString) {\n        this(excludePathFormatString, DEFAULT_PATH_SEAPARATOR);\n    }\n\n    public ExcludePathFilter(String excludePathFormatString, String pathSeparator) {\n        this(excludePathFormatString, pathSeparator, DEFAULT_FORMAT_SEPARATOR);\n    }\n\n    public ExcludePathFilter(String excludePathFormatString, String pathSeparator, String formatSeparator) {\n        if (StringUtils.isEmpty(pathSeparator)) {\n            throw new IllegalArgumentException(\"pathSeparator must not be empty\");\n        }\n        if (StringUtils.isEmpty(excludePathFormatString)) {\n            this.excludePathMatchers = new PathMatcher[0];\n            return;\n        }\n        final List<String> excludePathFormats = StringUtils.tokenizeToStringList(excludePathFormatString, formatSeparator);\n        final List<PathMatcher> excludePathMatchers = new ArrayList<>(excludePathFormats.size());\n        for (String excludePathFormat : excludePathFormats) {\n            final PathMatcher pathMatcher = createPathMatcher(excludePathFormat, pathSeparator);\n            excludePathMatchers.add(pathMatcher);\n        }\n        this.excludePathMatchers = toArray(excludePathMatchers);\n    }\n\n    public PathMatcher[] toArray(Collection<PathMatcher> collection) {\n        Objects.requireNonNull(collection, \"collection\");\n\n        return collection.toArray(new PathMatcher[0]);","sourceCodeStart":33,"sourceCodeEnd":69,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/config/ExcludePathFilter.java#L33-L69","documentation":"Constructor guard in ExcludePathFilter: the pathSeparator argument used to split the exclusion pattern string is empty or null, so the exclusion patterns cannot be tokenized. The offending input is the caller-supplied separator (not the default '/').","triggerScenarios":"Thrown at agent-module/bootstraps/bootstrap-core/src/main/java/com/navercorp/pinpoint/bootstrap/config/ExcludePathFilter.java:51 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Pass a non-empty separator such as '/' (or use the two-arg constructor / DEFAULT_PATH_SEAPARATOR)","Pass null explicitly if you want the default separator instead of an empty string","Validate configuration strings before constructing the filter"],"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"}