pinpoint-apm/pinpoint · error · IllegalArgumentException

invalid full qualified method name(). not found method

Error message

invalid full qualified method name(). not found method

What it means

AkkaHttpPlugin.toClassName(fullQualifiedMethodName) derives the class name from a fully-qualified method name by splitting at the last '.'. If there is no '.' at position > 0 (no method part present), the string is not a valid FQMN and an IllegalArgumentException is thrown.

Source

Thrown at agent-module/plugins/akka-http/src/main/java/com/navercorp/pinpoint/plugin/akka/http/AkkaHttpPlugin.java:83

            logger.warn("Not found 'profiler.akka.http.transform.targetname' in config");
        } else {
            try {
                final String className = toClassName(transformTargetName);
                final String methodName = DirectivesTransform.toMethodName(transformTargetName);
                logger.info("Add request handler method for Akka HTTP Server. class={}, method={}", className, methodName);
                transformDirectives(className);
                transformRequestContext();
                transformHttpRequest();
            } catch (IllegalArgumentException e) {
                logger.warn("can't find target '{}' value={}", AkkaHttpConfig.KEY_TRANSFORM_TARGET_NAME, transformTargetName);
            }
        }
    }

    private String toClassName(String fullQualifiedMethodName) {
        final int classEndPosition = fullQualifiedMethodName.lastIndexOf('.');
        if (classEndPosition <= 0) {
            throw new IllegalArgumentException("invalid full qualified method name(" + fullQualifiedMethodName + "). not found method");
        }

        return fullQualifiedMethodName.substring(0, classEndPosition).trim();
    }

    private void transformDirectives(String clazzName) {
        transformTemplate.transform(clazzName, DirectivesTransform.class);
    }

    public static class DirectivesTransform implements TransformCallback {

        private final PluginLogger logger = PluginLogManager.getLogger(this.getClass());

        @Override
        public byte[] doInTransform(Instrumentor instrumentor, ClassLoader classLoader, String className, Class<?> classBeingRedefined, ProtectionDomain protectionDomain, byte[] classfileBuffer) throws InstrumentException {
            final InstrumentClass target = instrumentor.getInstrumentClass(classLoader, className, classfileBuffer);
            final AkkaHttpConfig config = new AkkaHttpConfig(instrumentor.getProfilerConfig());
            final String transformTargetName = config.getTransformTargetName();

View on GitHub (pinned to 744c3d3075)

Solutions

  1. Supply the full qualified METHOD name: 'package.Class.method', not just the class
  2. Check the plugin config key expects a method (some keys take classes)
  3. Escape/quote the value correctly in the agent config if it contains special characters
  4. Add a startup check that each configured value contains a '.' after the class package

Example fix

// before (config)
instrument.directive = akka.http.scaladsl.server.Directive
// after
instrument.directive = akka.http.scaladsl.server.Directive.asComplete
Defensive patterns

Strategy: validation

Validate before calling

static String requireFqmn(String v) {
    if (v == null || v.lastIndexOf('.') <= 0)
        throw new IllegalArgumentException("expected full qualified method name, got: " + v);
    return v;
}

Prevention

When it happens

Trigger: Configuration supplies an interceptor class target as a bare class name (e.g. 'akka.http.scaladsl.server.Directive') or an otherwise dot-less string instead of 'com.example.Class.method'.

Common situations: Misconfigured akka-http plugin options where users provide class names rather than fully qualified method names; copy-pasting a class FQN into a method config field.

Understand the failure class

Background: "Invalid ... format", "must be in format X", "does not look like a ..." — invalid argument format errors across CLI tools and libraries — this error's family across 17 libraries.

Related errors


AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07). Data as JSON: /api/errors/2772f976a2788df9. Report an issue: GitHub.