{"record":{"id":"4b52ea528450b5ec","repo":"pinpoint-apm/pinpoint","slug":"argument-type-of-the-setter-is-different-with-the","errorCode":null,"errorMessage":"Argument type of the setter is different with the field type. setterMethod: ${fieldType}, fieldType: ${fieldJavaType}","messagePattern":"Argument type of the setter is different with the field type\\. setterMethod: (.+?), fieldType: (.+?)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/instrument/ASMClass.java","lineNumber":338,"sourceCode":"\n    @Override\n    public void addSetter(Class<?> setterClass, String fieldName) throws InstrumentException {\n        this.addSetter(setterClass, fieldName, false);\n    }\n\n    @Override\n    public void addSetter(Class<?> setterClass, String fieldName, boolean removeFinal) throws InstrumentException {\n        Objects.requireNonNull(setterClass, \"setterClass\");\n        try {\n            final SetterAnalyzer.SetterDetails setterDetails = SetterAnalyzer.instance().analyze(setterClass);\n            final ASMFieldNodeAdapter fieldNode = this.classNode.getField(fieldName, null);\n            if (fieldNode == null) {\n                throw new IllegalArgumentException(\"Not found field. name=\" + fieldName);\n            }\n\n            final Type fieldType = setterDetails.getFieldType();\n            if (!fieldNode.getJavaType().equals(fieldType)) {\n                throw new IllegalArgumentException(\"Argument type of the setter is different with the field type. setterMethod: \" + fieldType + \", fieldType: \" + fieldNode.getJavaType());\n            }\n\n            if (fieldNode.isStatic()) {\n                throw new IllegalArgumentException(\"Cannot add setter to static fields. setterMethod: \" + setterDetails.getSetter().getName() + \", fieldName: \" + fieldName);\n            }\n\n            final int original = fieldNode.getAccess();\n            boolean finalRemoved = false;\n            if (fieldNode.isFinal()) {\n                if (!removeFinal) {\n                    throw new IllegalArgumentException(\"Cannot add setter to final field. setterMethod: \" + setterDetails.getSetter().getName() + \", fieldName: \" + fieldName);\n                } else {\n                    final int removed = original & ~Opcodes.ACC_FINAL;\n                    fieldNode.setAccess(removed);\n                    finalRemoved = true;\n                }\n            }\n","sourceCodeStart":320,"sourceCodeEnd":356,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/instrument/ASMClass.java#L320-L356","documentation":"Thrown inside ASMClass.addSetter: the analyzed setter method's argument type does not match the target field's type (SetterAnalyzer result vs fieldNode type), so injecting the setter would create a type-inconsistent mutator.","triggerScenarios":"Thrown at agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/instrument/ASMClass.java:338 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Make the setter interface's parameter type exactly match the field type","Check for primitive/wrapper mismatches","Correct the setter class bound in the plugin configuration"],"exampleFix":null,"handlingStrategy":"type-guard","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"}