RFR: 8284: Fix Jolokia discovery issues

Martin Skarsaune duke at openjdk.org
Thu Oct 31 16:08:48 UTC 2024


On Wed, 30 Oct 2024 18:47:30 GMT, Martin Skarsaune <duke at openjdk.org> wrote:

> This fixes two bugs with Jolokia discovery:
> 1. serious : repeated discovery runs crash. Runing repeatedly in the background is the whole point
> 2. more of an annoyance: the PR disables JMC agent by omitting JVM info in the descriptor (as presence is interpreted as a local JVM)
> Both tested OK.

@aptmac : Are you able to create a bug for this. Or two if that is preferrable. 
Details on the bugs:

1. 

SEVERE: Cannot register MBean jolokia:type=Discovery,agent=jmc: javax.management.InstanceAlreadyExistsException: jolokia:type=Discovery,agent=jmc
javax.management.InstanceAlreadyExistsException: jolokia:type=Discovery,agent=jmc
	at java.management/com.sun.jmx.mbeanserver.Repository.addMBean(Repository.java:322)
	at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerWithRepository(DefaultMBeanServerInterceptor.java:1848)
	at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerDynamicMBean(DefaultMBeanServerInterceptor.java:945)
	at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerObject(DefaultMBeanServerInterceptor.java:880)
	at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:315)
	at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:523)
	at org.jolokia.server.core.service.impl.MBeanRegistry.registerMBeanAtServer(MBeanRegistry.java:80)
	at org.jolokia.server.core.service.impl.MBeanRegistry.registerMBean(MBeanRegistry.java:54)
	at org.jolokia.server.core.service.impl.JolokiaServiceManagerImpl.registerMBean(JolokiaServiceManagerImpl.java:409)
	at org.jolokia.server.core.service.impl.JolokiaContextImpl.registerMBean(JolokiaContextImpl.java:45)
	at org.jolokia.server.core.service.api.AbstractJolokiaService.registerJolokiaMBean(AbstractJolokiaService.java:98)
	at org.jolokia.service.discovery.JolokiaDiscovery.init(JolokiaDiscovery.java:45)
	at org.openjdk.jmc.jolokia.JolokiaDiscoveryListener.discoverJvms(JolokiaDiscoveryListener.java:70)
	at org.openjdk.jmc.jolokia.AbstractCachedDescriptorProvider$Scanner.scan(AbstractCachedDescriptorProvider.java:86)
	at org.openjdk.jmc.jolokia.AbstractCachedDescriptorProvider$Scanner.run(AbstractCachedDescriptorProvider.java:70)
	at java.base/java.lang.Thread.run(Thread.java:1583)

2. This option does not make sense for Jolokia:

<img width="870" alt="image" src="https://github.com/user-attachments/assets/d28873bd-10b5-4753-9964-2dfb6a451496">

application/org.openjdk.jmc.jolokia/src/main/java/org/openjdk/jmc/jolokia/JolokiaDiscoveryListener.java line 55:

> 53: 	public JolokiaDiscoveryListener(JolokiaDiscoverySettings settings) {
> 54: 		this.settings = settings;
> 55: 		jolokiaDiscovery = new JolokiaDiscovery();

Ensure that only one instance is instantiated (linked to the lifecycle of this plugin). If one tries to instantiate another, it will attempt to register an MBean and sinply crash

-------------

PR Comment: https://git.openjdk.org/jmc/pull/597#issuecomment-2448101768
PR Review Comment: https://git.openjdk.org/jmc/pull/597#discussion_r1824750529


More information about the jmc-dev mailing list