[
https://issues.apache.org/jira/browse/CXF-9246?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18113280#comment-18113280
]
Andriy Redko commented on CXF-9246:
-----------------------------------
[~ytwang] please open an issue against Apache Karaf project
> Race condition in threaded ConnectorServerFactory
> -------------------------------------------------
>
> Key: CXF-9246
> URL: https://issues.apache.org/jira/browse/CXF-9246
> Project: CXF
> Issue Type: Bug
> Environment: JDK: openjdk 17.0.8
> Karaf Version: 4.4.3
> Reporter: ytwang
> Priority: Major
>
> Summary:
> Race condition in threaded ConnectorServerFactory
>
> Affects Version/s:
> 4.4.3/4.2.16
>
> Component/s:
> karaf
>
> Environment:
> JDK: openjdk 17.0.8
> Karaf Version: 4.4.3
>
> Description:
> Although the issue KARAF-7453 has been addressed, a race condition still
> occurs during repeated Karaf restarts (approximately once in every 100
> restarts).
> Specifically, when the ConnectorServerFactory in the
> org.apache.karaf.management.server bundle indicates that the Init() method
> has completed, the JMX service is still in the process of starting up.
> Concurrently, the destroy operation has already begun execution.
>
> Reproduction Steps:
> Restart the Karaf service at five-minute intervals.
>
> Normal Startup:
> The destroy operation should only be initiated after the JMX service has
> fully completed its startup process.
> To illustrate the sequence of execution, we have included log outputs in the
> attachment. A typical output is as follows:
> ------------------------------------------------------------------------------------
> Normal Log:
> 2026-08-01 00:05:52.137+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java start() Start.,
> 2026-08-01 00:05:52.142+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java doOpen() Start.,
> 2026-08-01 00:05:52.144+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java reconfigure() Start.,
> 2026-08-01 00:05:52.144+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java reconfigure() End.,
> 2026-08-01 00:05:52.144+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java reconfigure() Start.,
> 2026-08-01 00:05:52.144+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java reconfigure() End.,
> 2026-08-01 00:05:52.145+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java doOpen() End.,
> 2026-08-01 00:05:52.145+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java start()
> scheduled.set(false).,
> 2026-08-01 00:05:52.145+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java reconfigure() Start.,
> 2026-08-01 00:05:52.145+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java reconfigure-submit Start.,
> 2026-08-01 00:05:52.145+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java reconfigure-submit End.,
> 2026-08-01 00:05:52.145+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java reconfigure() End.,
> 2026-08-01 00:05:52.145+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java start() End.,
> 2026-08-01 00:05:52.146+0900,DEBUG,CM Configuration Updater (ManagedService
> Update: pid=[org.apache.karaf.management]) |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java updated() Start.,
> 2026-08-01 00:05:52.146+0900,DEBUG,CM Configuration Updater (ManagedService
> Update: pid=[org.apache.karaf.management]) |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java reconfigure() Start.,
> 2026-08-01 00:05:52.146+0900,DEBUG,CM Configuration Updater (ManagedService
> Update: pid=[org.apache.karaf.management]) |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java reconfigure() End.,
> 2026-08-01 00:05:52.146+0900,DEBUG,CM Configuration Updater (ManagedService
> Update: pid=[org.apache.karaf.management]) |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java updated() End.,
> 2026-08-01 00:05:52.146+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java run() Start.,
> 2026-08-01 00:05:52.146+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,Activator.java doStop() Start.,
> 2026-08-01 00:05:52.146+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java doStop() Start.,
> 2026-08-01 00:05:52.147+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java doStop() End.,
> 2026-08-01 00:05:52.147+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,Activator.java doStop() End.,
> 2026-08-01 00:05:52.147+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,Activator.java doStart() Start.,
> 2026-08-01 00:05:52.149+0900,INFO,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,Setting java.rmi.server.hostname system
> property to 127.0.0.1,
> 2026-08-01 00:05:52.167+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.ConnectorServerFactory | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,ConnectorServerFactory.java Init() Start.,
> 2026-08-01 00:05:52.199+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.ConnectorServerFactory | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,ConnectorServerFactory.java Init() End.,
> 2026-08-01 00:05:52.199+0900,DEBUG,JMX Connector Thread
> [service:jmx:rmi://127.0.0.1:44544/jndi/rmi://127.0.0.1:11199/karaf-root] |
> org.apache.karaf.management.ConnectorServerFactory | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,ConnectorServerFactory.java
> Init-connectorServer Start.,
> 2026-08-01 00:05:52.286+0900,DEBUG,JMX Connector Thread
> [service:jmx:rmi://127.0.0.1:44544/jndi/rmi://127.0.0.1:11199/karaf-root] |
> org.apache.karaf.management.ConnectorServerFactory | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,ConnectorServerFactory.java
> Init-connectorServer End.,
> 2026-08-01 00:05:52.332+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,Activator.java doStart() End.,
> 2026-08-01 00:05:52.333+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.242.191>>>,,,,,,,,BaseActivator.java run() End.,
> ------------------------------------------------------------------------------------
>
>
> Abnormal Startup:
> The destroy operation is triggered prematurely, before the JMX service has
> fully completed its startup process.
> To illustrate the sequence of execution, we have included log outputs in the
> attachment. A typical output is as follows:
> ------------------------------------------------------------------------------------
> Abnormal Log:
> 2026-08-03 09:02:05.496+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java start() Start.,
> 2026-08-03 09:02:05.501+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java doOpen() Start.,
> 2026-08-03 09:02:05.502+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java reconfigure() Start.,
> 2026-08-03 09:02:05.502+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java reconfigure() End.,
> 2026-08-03 09:02:05.503+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java reconfigure() Start.,
> 2026-08-03 09:02:05.503+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java reconfigure() End.,
> 2026-08-03 09:02:05.503+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java doOpen() End.,
> 2026-08-03 09:02:05.503+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java start() scheduled.set(false).,
> 2026-08-03 09:02:05.503+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java reconfigure() Start.,
> 2026-08-03 09:02:05.503+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java reconfigure-submit Start.,
> 2026-08-03 09:02:05.504+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java reconfigure-submit End.,
> 2026-08-03 09:02:05.504+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java reconfigure() End.,
> 2026-08-03 09:02:05.504+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java run() Start.,
> 2026-08-03 09:02:05.504+0900,DEBUG,features-3-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java start() End.,
> 2026-08-03 09:02:05.504+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,Activator.java doStop() Start.,
> 2026-08-03 09:02:05.506+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java doStop() Start.,
> 2026-08-03 09:02:05.506+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java doStop() End.,
> 2026-08-03 09:02:05.506+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,Activator.java doStop() End.,
> 2026-08-03 09:02:05.506+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,Activator.java doStart() Start.,
> 2026-08-03 09:02:05.507+0900,DEBUG,CM Configuration Updater (ManagedService
> Update: pid=[org.apache.karaf.management]) |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java updated() Start.,
> 2026-08-03 09:02:05.507+0900,DEBUG,CM Configuration Updater (ManagedService
> Update: pid=[org.apache.karaf.management]) |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java reconfigure() Start.,
> 2026-08-03 09:02:05.507+0900,DEBUG,CM Configuration Updater (ManagedService
> Update: pid=[org.apache.karaf.management]) |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java reconfigure-submit Start.,
> 2026-08-03 09:02:05.507+0900,DEBUG,CM Configuration Updater (ManagedService
> Update: pid=[org.apache.karaf.management]) |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java reconfigure-submit End.,
> 2026-08-03 09:02:05.507+0900,DEBUG,CM Configuration Updater (ManagedService
> Update: pid=[org.apache.karaf.management]) |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java reconfigure() End.,
> 2026-08-03 09:02:05.507+0900,DEBUG,CM Configuration Updater (ManagedService
> Update: pid=[org.apache.karaf.management]) |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java updated() End.,
> 2026-08-03 09:02:05.507+0900,INFO,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,Setting java.rmi.server.hostname system property
> to 127.0.0.1,
> 2026-08-03 09:02:05.515+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.ConnectorServerFactory | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,ConnectorServerFactory.java Init() Start.,
> 2026-08-03 09:02:05.533+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.ConnectorServerFactory | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,ConnectorServerFactory.java Init() End.,
> 2026-08-03 09:02:05.535+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,Activator.java doStart() End.,
> 2026-08-03 09:02:05.535+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java run() End.,
> 2026-08-03 09:02:05.535+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java run() Start.,
> 2026-08-03 09:02:05.535+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,Activator.java doStop() Start.,
> 2026-08-03 09:02:05.535+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java doStop() Start.,
> 2026-08-03 09:02:05.536+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java doStop() End.,
> 2026-08-03 09:02:05.537+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.ConnectorServerFactory | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,ConnectorServerFactory.java destroy() Start.,
> 2026-08-03 09:02:05.541+0900,DEBUG,JMX Connector Thread
> [service:jmx:rmi://127.0.0.1:44544/jndi/rmi://127.0.0.1:11199/karaf-root] |
> org.apache.karaf.management.ConnectorServerFactory | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,ConnectorServerFactory.java Init-connectorServer
> Start.,
> 2026-08-03 09:02:05.537+0900,WARN,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,Error destroying ConnectorServerFactory,object
> not exported
> java.rmi.NoSuchObjectException: object not exported
> at sun.rmi.transport.ObjectTable.unexportObject(Unknown Source) ~[?:?]
> at java.rmi.server.UnicastRemoteObject.unexportObject(Unknown Source) ~[?:?]
> at javax.management.remote.rmi.RMIJRMPServerImpl.unexport(Unknown Source)
> ~[?:?]
> at javax.management.remote.rmi.RMIJRMPServerImpl.closeServer(Unknown Source)
> ~[?:?]
> at javax.management.remote.rmi.RMIServerImpl.close(Unknown Source) ~[?:?]
> at javax.management.remote.rmi.RMIConnectorServer.stop(Unknown Source) ~[?:?]
> at
> org.apache.karaf.management.ConnectorServerFactory.destroy(ConnectorServerFactory.java:488)
> ~[?:?]
> at org.apache.karaf.management.internal.Activator.doStop(Activator.java:244)
> ~[?:?]
> at org.apache.karaf.util.tracker.BaseActivator.run(BaseActivator.java:324)
> ~[?:?]
> at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) ~[?:?]
> at java.util.concurrent.FutureTask.run(Unknown Source) ~[?:?]
> at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?]
> at java.lang.Thread.run(Unknown Source) ~[?:?]
> 2026-08-03 09:02:05.544+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,Activator.java doStop() End.,
> 2026-08-03 09:02:05.544+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,Activator.java doStart() Start.,
> 2026-08-03 09:02:05.544+0900,WARN,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,java.rmi.server.hostname system property is
> already set to 127.0.0.1. Apache Karaf doesn't override it,
> 2026-08-03 09:02:05.544+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.ConnectorServerFactory | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,ConnectorServerFactory.java Init() Start.,
> 2026-08-03 09:02:05.565+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.ConnectorServerFactory | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,ConnectorServerFactory.java Init() End.,
> 2026-08-03 09:02:05.567+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,Activator.java doStart() End.,
> 2026-08-03 09:02:05.567+0900,DEBUG,activator-1-thread-1 |
> org.apache.karaf.management.internal.Activator | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,BaseActivator.java run() End.,
> 2026-08-03 09:02:05.581+0900,DEBUG,JMX Connector Thread
> [service:jmx:rmi://127.0.0.1:44544/jndi/rmi://127.0.0.1:11199/karaf-root] |
> org.apache.karaf.management.ConnectorServerFactory | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,ConnectorServerFactory.java Init-connectorServer
> Start.,
> 2026-08-03 09:02:05.621+0900,DEBUG,JMX Connector Thread
> [service:jmx:rmi://127.0.0.1:44544/jndi/rmi://127.0.0.1:11199/karaf-root] |
> org.apache.karaf.management.ConnectorServerFactory | 212 -
> org.apache.karaf.management.server - 4.4.3 |
> ,<<<192.168.211.15>>>,,,,,,,,ConnectorServerFactory.java Init-connectorServer
> End.,
> ------------------------------------------------------------------------------------
>
> Detailed Thread Execution Flow:
> The issue stems from a lack of synchronization between the
> ConnectorServerFactory initialization and the actual startup of the
> underlying JMX Connector.
> In the abnormal scenario, the init() method returns (marking the
> ConnectorServerFactory as initialized) before the background thread has fully
> started the JMX Connector.
> This allows the destroy() method to be invoked prematurely by another thread,
> interrupting the JMX startup process.
>
> A.Actual Race Condition:
> In the failing scenario, the init() method completes while the JMX Connector
> is still starting up in a background thread.
> This creates a window where the connectorServerFactory is "initialized" but
> the JMX service is not yet ready, allowing a concurrent destroy() call to
> interrupt the process.
> 1.Activator.java doStart() Start
> 2.ConnectorServerFactory.java Init() Start
> 3.ConnectorServerFactory.java Init() End ★★(ConnectorServerFactory is
> Initialized)
> 4.ConnectorServerFactory.java Init-connectorServer Start
> ★★(ConnectorServerFactory is Initialized,but JMX Service Starting in
> Background)
> 5.Activator.java doStart() End ★★(Main Thread Finished, but JMX Service
> Still Starting)
> [Note: At this stage, if a destroy() call is triggered by another thread,
> it interrupts the JMX startup, causing the failure.]
> 6.ConnectorServerFactory.java Init-connectorServer End ★★(JMX Service startup
> failure)
>
> B.Expected Behavior:
> In a stable scenario, the JMX Connector is fully started before the init()
> method completes, ensuring the service is ready before any potential destroy
> operations can occur.
> 1.Activator.java doStart() Start
> 2.ConnectorServerFactory.java Init() Start
> 3.ConnectorServerFactory.java Init-connectorServer Start
> 4.ConnectorServerFactory.java Init-connectorServer End ★★(JMX Service Fully
> Started)
> 5.ConnectorServerFactory.java Init() End ★★(ConnectorServerFactory is
> Initialized)
> 6.Activator.java doStart() End ★★(Main Thread Finished)
>
>
> As seen from the above log, the issue occurs when the ConnectorServerFactory
> indicates initialization as complete, while the JMX service in the background
> thread has not yet finished starting up.
> At this point, the destroy process is initiated.
> This conflict also outputs the following stack trace to the stdout/stderr:
>
> ------------------------------------------------------------------------------------
> wrapper.Log:
> INFO | jvm 1 | 2026/08/03 09:02:05 | Exception in thread "JMX Connector
> Thread
> [service:jmx:rmi://127.0.0.1:44544/jndi/rmi://127.0.0.1:11199/karaf-root]"
> java.lang.RuntimeException: Could not start JMX connector server
> INFO | jvm 1 | 2026/08/03 09:02:05 | at
> org.apache.karaf.management.ConnectorServerFactory.lambda$init$0(ConnectorServerFactory.java:444)
> INFO | jvm 1 | 2026/08/03 09:02:05 | at
> java.base/java.lang.Thread.run(Unknown Source)
> INFO | jvm 1 | 2026/08/03 09:02:05 | Caused by: java.io.IOException: The
> server has been stopped.
> INFO | jvm 1 | 2026/08/03 09:02:05 | at
> java.management.rmi/javax.management.remote.rmi.RMIConnectorServer.start(Unknown
> Source)
> INFO | jvm 1 | 2026/08/03 09:02:05 | at
> org.apache.karaf.management.ConnectorServerFactory.lambda$init$0(ConnectorServerFactory.java:426)
> INFO | jvm 1 | 2026/08/03 09:02:05 | ... 1 more
> ------------------------------------------------------------------------------------
>
> This issue has already occurred twice in the field environment. Therefore, It
> is necessary to modify the Karaf-side code to address the thread race
> condition.
> The proposed temporary workaround is as follows:
> A workaround for the issue is to implement a synchronous wait for the JMX
> Connector to have fully started before marking the ConnectorServerFactory as
> initialized.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)