{"record":{"id":"2930bb2570388f09","repo":"pinpoint-apm/pinpoint","slug":"lambdafactoryclassadaptor-initialize-fail-caused-b","errorCode":null,"errorMessage":"LambdaFactoryClassAdaptor initialize fail Caused by:${e.getMessage()}","messagePattern":"LambdaFactoryClassAdaptor initialize fail Caused by:(.+?)","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/instrument/transformer/InnerClassLambdaMetafactoryTransformer.java","lineNumber":48,"sourceCode":" */\npublic class InnerClassLambdaMetafactoryTransformer implements ClassFileTransformer {\n\n    private final Logger logger = LogManager.getLogger(this.getClass());\n\n    private static final String InnerClassLambdaMetafactory = \"java/lang/invoke/InnerClassLambdaMetafactory\";\n\n    private final Object lambdaFactoryClassAdaptor;\n    private final Method transformMethod;\n\n    public InnerClassLambdaMetafactoryTransformer() {\n        try {\n            final ClassLoader agentClassLoader = InnerClassLambdaMetafactoryTransformer.class.getClassLoader();\n            final Class<?> lambdaAdaptor = agentClassLoader.loadClass(\"com.navercorp.pinpoint.profiler.instrument.lambda.LambdaFactoryClassAdaptor\");\n            final Constructor<?> constructor = lambdaAdaptor.getConstructor();\n            this.lambdaFactoryClassAdaptor = constructor.newInstance();\n            this.transformMethod = lambdaAdaptor.getMethod(\"loadTransformedBytecode\", byte[].class);\n        } catch (Exception e) {\n            throw new IllegalStateException(\"LambdaFactoryClassAdaptor initialize fail Caused by:\" + e.getMessage(), e);\n        }\n    }\n\n    @Override\n    public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {\n        if (!InnerClassLambdaMetafactory.equals(className)) {\n            return null;\n        }\n        try {\n            logger.debug(\"transform InnerClassLambdaMetafactory\");\n            final byte[] transformBytecode = (byte[]) transformMethod.invoke(lambdaFactoryClassAdaptor, new Object[]{classfileBuffer});\n            return transformBytecode;\n        } catch (Exception e) {\n            logger.warn(\"InnerClassLambdaMetafactory transform fail Caused by:\" + e.getMessage(), e);\n            return null;\n        }\n    }\n}","sourceCodeStart":30,"sourceCodeEnd":66,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/instrument/transformer/InnerClassLambdaMetafactoryTransformer.java#L30-L66","documentation":"InnerClassLambdaMetafactoryTransformer's constructor reflectively loads LambdaFactoryClassAdaptor from the agent classloader and wires its constructor and loadTransformedBytecode method. Any Exception during this initialization (class not found, no accessible constructor, instantiation failure) is rethrown as IllegalStateException wrapping the original cause.","triggerScenarios":"The class com.navercorp.pinpoint.profiler.instrument.lambda.LambdaFactoryClassAdaptor is missing from the agent classpath, lacks a no-arg constructor, or its constructor throws; also any reflection failure (SecurityException, InstantiationException).","commonSituations":"Mismatched agent jar packaging (stripped/partial bootstrap jar); running a plugin against a different Pinpoint agent version where the adaptor class moved or was renamed; custom agent assembly omitting the lambda instrumentation classes.","solutions":["Check the wrapped cause (e.getCause()) to see whether it is ClassNotFoundException, NoSuchMethodException, or an instantiation failure","Use a complete, matching pinpoint agent distribution so LambdaFactoryClassAdaptor is present in the agent classloader","Align plugin/agent versions — rebuild the transformer against the agent version in use","Verify the agent jar assembly (e.g. maven shading) does not exclude the instrument.lambda package"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"try {\n    Class<?> c = InnerClassLambdaMetafactoryTransformer.class.getClassLoader()\n        .loadClass(\"com.navercorp.pinpoint.profiler.instrument.lambda.LambdaFactoryClassAdaptor\");\n    c.getConstructor();\n} catch (ReflectiveOperationException e) {\n    throw new IllegalStateException(\"agent jar incomplete: LambdaFactoryClassAdaptor unusable\", e);\n}","typeGuard":"boolean lambdaAdaptorAvailable(ClassLoader cl) {\n    try { cl.loadClass(\"com.navercorp.pinpoint.profiler.instrument.lambda.LambdaFactoryClassAdaptor\"); return true; }\n    catch (ClassNotFoundException e) { return false; }\n}","tryCatchPattern":"try {\n    new InnerClassLambdaMetafactoryTransformer();\n} catch (IllegalStateException e) {\n    logger.error(\"lambda transformer init failed, cause: {}\", e.getCause(), e);\n}","preventionTips":["Ship the full official agent distribution, not a hand-trimmed jar","Keep agent and plugin versions aligned","Run agent smoke tests that exercise lambda instrumentation","Check shaded/assembly excludes do not drop instrument.lambda classes"],"tags":["reflection","class-not-found","agent-bootstrap"],"backgroundTag":"class-not-found","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"}