pinpoint-apm/pinpoint · error · IllegalArgumentException

invalid full qualified method name(${fullQualifiedMethodName

Error message

invalid full qualified method name(${fullQualifiedMethodName}). not found method

What it means

UserPlugin.toClassName splits a fully qualified method name like 'com.foo.Bar.baz' into its class portion by finding the last dot. If there is no dot (position <= 0), the string is not a valid fully qualified method name, and it throws IllegalArgumentException with the offending input. This is a plugin configuration parsing guard.

Source

Thrown at agent-module/plugins/user/src/main/java/com/navercorp/pinpoint/plugin/user/UserPlugin.java:175

                final String className = toClassName(fullyQualifiedMethodName);
                final String methodName = toMethodName(fullyQualifiedMethodName);
                Set<String> methodNames = userMethods.get(className);
                if (methodNames == null) {
                    methodNames = new HashSet<>();
                    userMethods.put(className, methodNames);
                }
                methodNames.add(methodName);
            } catch (Exception e) {
                logger.warn("Failed to parse user method(" + fullyQualifiedMethodName + ").", e);
            }
        }
        return userMethods;
    }

    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);
    }

    String toMethodName(String fullQualifiedMethodName) {
        final int methodBeginPosition = fullQualifiedMethodName.lastIndexOf('.');
        if (methodBeginPosition <= 0 || methodBeginPosition + 1 >= fullQualifiedMethodName.length()) {
            throw new IllegalArgumentException("invalid full qualified method name(" + fullQualifiedMethodName + "). not found method");
        }

        return fullQualifiedMethodName.substring(methodBeginPosition + 1);
    }

    @Override
    public void setTransformTemplate(TransformTemplate transformTemplate) {
        this.transformTemplate = transformTemplate;
    }

View on GitHub (pinned to 744c3d3075)

Solutions

  1. Provide the full qualified method name including class and method, e.g. 'com.example.Foo.bar'
  2. Check the plugin configuration file for truncated or wrapped lines
  3. Trim whitespace/typos such as leading dots or missing package segments
  4. Add a config pre-check that validates each entry contains at least one dot

Example fix

// before
userPlugin.include("com.example.Foo");
// after
userPlugin.include("com.example.Foo.handleRequest");
Defensive patterns

Strategy: validation

Validate before calling

String fqn = config.getMethodName();
if (fqn == null || fqn.indexOf('.') <= 0 || fqn.endsWith(".")) {
    throw new IllegalArgumentException("expected package.Class.method, got: " + fqn);
}

Try / catch

try {
    String cls = toClassName(fqn);
} catch (IllegalArgumentException e) {
    logger.error("bad user-plugin method expression: {}", fqn, e);
    throw new PluginSetupException(e);
}

Prevention

When it happens

Trigger: A user-plugin configuration value (e.g. a targeted method expression) contains no '.' separator between class and method — e.g. 'MyClass' or an empty string passed to toClassName.

Common situations: Typo or missing method part in pinpoint-user-plugin config (profiler.user.include/remove entries); property file line-wrapping that truncated the method name; using a class name instead of a fully qualified method name.

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/246412f4e1c81630. Report an issue: GitHub.