{"record":{"id":"c52558391eb0eea8","repo":"pinpoint-apm/pinpoint","slug":"args-size-not-equal","errorCode":null,"errorMessage":"args size not equal","messagePattern":"args size not equal","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"warning","filePath":"agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/util/ApiUtils.java","lineNumber":38,"sourceCode":"\n/**\n * @author emeroad\n * @author jaehong.kim\n */\npublic final class ApiUtils {\n\n    private final static String EMPTY_ARRAY = \"()\";\n\n    private ApiUtils() {\n    }\n\n    public static String mergeParameterVariableNameDescription(String[] parameterType, String[] variableName) {\n        if (parameterType == null && variableName == null) {\n            return EMPTY_ARRAY;\n        }\n        if (variableName != null && parameterType != null) {\n            if (parameterType.length != variableName.length) {\n                throw new IllegalArgumentException(\"args size not equal\");\n            }\n            if (parameterType.length == 0) {\n                return EMPTY_ARRAY;\n            }\n            StringBuilder sb = new StringBuilder(64);\n            sb.append('(');\n            int end = parameterType.length - 1;\n            for (int i = 0; i < parameterType.length; i++) {\n                sb.append(parameterType[i]);\n                sb.append(' ');\n                sb.append(variableName[i]);\n                if (i < end) {\n                    sb.append(\", \");\n                }\n            }\n            sb.append(')');\n            return sb.toString();\n        }","sourceCodeStart":20,"sourceCodeEnd":56,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/util/ApiUtils.java#L20-L56","documentation":"ApiUtils.mergeParameterVariableNameDescription merges JVM parameter type names with their variable names into an API descriptor string like '(int a, java.lang.String b)'. The two arrays are treated as index-aligned pairs, so mismatched lengths indicate corrupt metadata and IllegalArgumentException is thrown.","triggerScenarios":"Calling mergeParameterVariableNameDescription(parameterType, variableName) with both arrays non-null but of different lengths.","commonSituations":"Plugin metadata where parameter types were parsed from bytecode but variable names come from debug info compiled without -g or from a stale cache; mismatched arrays built by hand.","solutions":["Ensure parameterType and variableName arrays are generated from the same method metadata and have equal length","Compile target classes with debug info (-g) so variable names match parameter counts","Pass null for one of the arrays (not mismatched arrays) to get the fallback behavior","Add an assertion/length check where the arrays are constructed"],"exampleFix":"// before\nApiUtils.mergeParameterVariableNameDescription(new String[]{\"int\",\"String\"}, new String[]{\"a\"}); // throws\n// after\nif (parameterTypes.length == variableNames.length) {\n    ApiUtils.mergeParameterVariableNameDescription(parameterTypes, variableNames);\n}","handlingStrategy":"validation","validationCode":"if (parameterType != null && variableName != null && parameterType.length != variableName.length) { throw new IllegalStateException(\"parameter/variable arrays must align\"); }","typeGuard":null,"tryCatchPattern":"try { desc = ApiUtils.mergeParameterVariableNameDescription(types, names); } catch (IllegalArgumentException e) { desc = String.join(\",\", types); }","preventionTips":["Derive both arrays from the same method metadata source","Compile instrumented targets with -g so variable names exist","Assert equal lengths at metadata construction time"],"tags":["java","api-metadata","argument-validation"],"backgroundTag":"argument-out-of-range","analyzedSha":"744c3d3075e595656abb1ae331ad2c0e4c9eb996","analyzedAt":"2026-09-07T18:48:45.289Z","contentChangedAt":"2026-09-07T18:48:45.289Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}