Skip to content

The caller filter isn't fully effective.Β #12742

@funky-eyes

Description

@funky-eyes

Describe the issue
filter json:

{
  "rules": [
    { "excludeClasses": "**" },
    { "includeClasses": "org.apache.seata.**" }
  ],
  "regexRules": [
    { "excludeClasses": ".*[Tt]est.*" },
    { "excludeClasses": ".*Test$" },
    { "excludeClasses": ".*Tests$" }
  ]
}

Steps to reproduce the issue

  1. Add JVM options -agentlib:native-image-agent=caller-filter-file=/xxxxx/incubator-seata/aot_filter.json,config-merge-dir=/xxxxx/incubator-seata/all/src/main/resources/META-INF/native-image
  2. run

Describe GraalVM and your environment:

  • GraalVM version (latest snapshot builds can be found here), or commit id if built from source: [e.g. EE 19.3, CE 20.0, CE 20.1.0-dev-20200304_0848]
  • JDK major version: java version "25" 2025-09-16 LTS
    Java(TM) SE Runtime Environment Oracle GraalVM 25+37.1 (build 25+37-LTS-jvmci-b01)
    Java HotSpot(TM) 64-Bit Server VM Oracle GraalVM 25+37.1 (build 25+37-LTS-jvmci-b01, mixed mode, sharing)
  • OS: macos 26.2 (25C56)
  • Architecture: arm64

More details

reachability-metadata.json
For instance, completely irrelevant metadata entries like the following are being included:

"reflection": [
  {
    "type": "com.intellij.rt.junit.JUnitStarter",
    "jniAccessible": true,
    "methods": [
      {
        "name": "main",
        "parameterTypes": [ "java.lang.String[]" ]
      }
    ]
  }
]

How can I effectively filter out these unwanted reflection metadata entries? I only want to retain classes from specific packages that I explicitly need, such as those in the JDK, Seata, ByteBuddy, etc.
I've tried implementing a custom filter (caller-filter), but it doesn't appear to be working as expected or taking full effect.

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions