Skip to content

When enabled, JMX metrics reporter throws exception on startup #2712

@morazow

Description

@morazow

Search before asking

  • I searched in the issues and found nothing similar.

Fluss version

main (development)

Please describe the bug 🐞

When enabled, the JMX reporters fails with following error:

2026-02-24 15:26:40,487 ERROR org.apache.fluss.metrics.reporter.ReporterSetup              [] - Could not instantiate MetricReporter with name jmx. Metrics might not be exposed/reported.
java.lang.IllegalAccessError: superclass access check failed: class org.apache.fluss.metrics.jmx.JMXServer$JmxRegistry (in unnamed module @0x41294f8) cannot access class sun.rmi.registry.RegistryImpl (in module java.rmi) because module java.rmi does not export sun.rmi.registry to unnamed module @0x41294f8
	at java.lang.ClassLoader.defineClass1(Native Method) ~[?:?]
	at java.lang.ClassLoader.defineClass(Unknown Source) ~[?:?]
	at java.security.SecureClassLoader.defineClass(Unknown Source) ~[?:?]
	at java.net.URLClassLoader.defineClass(Unknown Source) ~[?:?]
	at java.net.URLClassLoader$1.run(Unknown Source) ~[?:?]
	at java.net.URLClassLoader$1.run(Unknown Source) ~[?:?]
	at java.security.AccessController.doPrivileged(Unknown Source) ~[?:?]
	at java.net.URLClassLoader.findClass(Unknown Source) ~[?:?]
	at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
	at org.apache.fluss.classloading.ComponentClassLoader.loadClassFromComponentOnly(ComponentClassLoader.java:153) ~[fluss-server-0.8.0-incubating.jar:0.8.0-incubating]
	at org.apache.fluss.classloading.ComponentClassLoader.loadClassFromOwnerFirst(ComponentClassLoader.java:175) ~[fluss-server-0.8.0-incubating.jar:0.8.0-incubating]
	at org.apache.fluss.classloading.ComponentClassLoader.loadClass(ComponentClassLoader.java:110) ~[fluss-server-0.8.0-incubating.jar:0.8.0-incubating]
	at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:?]
	at org.apache.fluss.metrics.jmx.JMXServer.internalStart(JMXServer.java:94) ~[?:?]
	at org.apache.fluss.metrics.jmx.JMXServer.start(JMXServer.java:62) ~[?:?]
	at org.apache.fluss.metrics.jmx.JMXService.startJMXServerWithPortRanges(JMXService.java:90) ~[?:?]
	at org.apache.fluss.metrics.jmx.JMXService.startInstance(JMXService.java:59) ~[?:?]
	at org.apache.fluss.metrics.jmx.JMXReporter.<init>(JMXReporter.java:75) ~[?:?]
	at org.apache.fluss.metrics.jmx.JMXReporterPlugin.createMetricReporter(JMXReporterPlugin.java:32) ~[?:?]
	at org.apache.fluss.metrics.jmx.JMXReporterPlugin.createMetricReporter(JMXReporterPlugin.java:25) ~[?:?]
	at org.apache.fluss.metrics.reporter.ReporterSetup.setUpReporters(ReporterSetup.java:131) [fluss-server-0.8.0-incubating.jar:0.8.0-incubating]
	at org.apache.fluss.metrics.reporter.ReporterSetup.fromConfiguration(ReporterSetup.java:59) [fluss-server-0.8.0-incubating.jar:0.8.0-incubating]
	at org.apache.fluss.metrics.registry.MetricRegistry.create(MetricRegistry.java:72) [fluss-server-0.8.0-incubating.jar:0.8.0-incubating]
	at org.apache.fluss.server.coordinator.CoordinatorServer.startServices(CoordinatorServer.java:164)

Solution

Use LocateRegistry.createRegistry factory that uses JDK internals from inside the JDK module.

Are you willing to submit a PR?

  • I'm willing to submit a PR!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions