pinpoint-apm/pinpoint · warning

Ignore class file transformer

Error message

Ignore class file transformer {}

What it means

WARN log in ClassFileTransformerProvider.getMatchableTransformers: a ClassFileTransformer from the injected transformer list does not implement MatchableClassFileTransformer (getMatcher() unavailable), so it cannot be wrapped for targeted matching and is skipped. The agent registers only matchable transformers so bytecode transformation is limited to classes that actually match.

Solutions

  1. Implement MatchableClassFileTransformer (provide getMatcher()) in the custom transformer instead of plain ClassFileTransformer.
  2. Check the plugin's Pinpoint version compatibility and upgrade/rebuild it.
  3. Verify the transformer list wiring in the DI configuration; remove transformers that are intentionally non-matchable.

Example fix

// before
public class MyTransformer implements ClassFileTransformer { ... }
// after
public class MyTransformer implements MatchableClassFileTransformer {
  public ClassMatcher getMatcher() { return new DefaultClassNameMatcher(Arrays.asList("com.example.Target")); }
  ...
}
Defensive patterns

Strategy: type-guard

Validate before calling

if (!(transformer instanceof MatchableClassFileTransformer)) {
    throw new IllegalArgumentException(transformer + " must implement MatchableClassFileTransformer");
}

Type guard

boolean isMatchable(Object t) {
    return t instanceof MatchableClassFileTransformer;
}

Prevention

When it happens

Trigger: A transformer in the provided transformer list is not an instance of MatchableClassFileTransformer (or wrap() returned null), so it is dropped during agent startup.

Common situations: A custom or third-party plugin registers a plain ClassFileTransformer incompatible with Pinpoint's transformer registry; plugin built against an older Pinpoint API before the Matchable interface.

Understand the failure class

Background: Type mismatch errors: IllegalArgumentException, TypeError and type guards across 150 open-source libraries — this error's family across 150 libraries.

Related errors


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

Appendix: source

Thrown at agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/context/provider/ClassFileTransformerProvider.java:162

            return new MatchableTransformerRegistry(this.instrumentMatcherCacheConfig, matchableClassFileTransformerList);
        }
        return new DefaultTransformerRegistry(matchableClassFileTransformerList);
    }

    private List<MatchableClassFileTransformer> getMatchableTransformers(PluginContextLoadResult pluginContexts) {
        Objects.requireNonNull(pluginContexts, "pluginContexts");

        final List<MatchableClassFileTransformer> matcherList = new ArrayList<>();
        for (ClassFileTransformer transformer : pluginContexts.getClassFileTransformer()) {
            if (transformer instanceof MatchableClassFileTransformer) {
                final MatchableClassFileTransformer t = (MatchableClassFileTransformer) transformer;
                if (logger.isInfoEnabled()) {
                    logger.info("Registering class file transformer {} for {} ", t, t.getMatcher());
                }
                matcherList.add(t);
            } else {
                if (logger.isWarnEnabled()) {
                    logger.warn("Ignore class file transformer {}", transformer);
                }
            }
        }

        return matcherList;
    }

}

View on GitHub (pinned to 744c3d3075)