Concurrency issue when starting JMX manager

Description

Occasionally, this exception is logged in environments where JMX is enabled. It appears to be possible to try and start the JMX manager twice (where the second attempt will fail, as it can't bind to the port that the first attempt just bound to).

org.jivesoftware.openfire.JMXManager - Failed to start JMX connector java.rmi.server.ExportException: Port already in use: 1099; nested exception is: java.net.BindException: Address already in use (Bind failed) at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:346) ~[?:1.8.0_292] at sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:254) ~[?:1.8.0_292] at sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:412) ~[?:1.8.0_292] at sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147) ~[?:1.8.0_292] at sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:237) ~[?:1.8.0_292] at java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:383) ~[?:1.8.0_292] at java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.java:346) ~[?:1.8.0_292] at javax.management.remote.rmi.RMIJRMPServerImpl.export(RMIJRMPServerImpl.java:148) ~[?:1.8.0_292] at javax.management.remote.rmi.RMIJRMPServerImpl.export(RMIJRMPServerImpl.java:124) ~[?:1.8.0_292] at javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:404) ~[?:1.8.0_292] at org.eclipse.jetty.jmx.ConnectorServer.doStart(ConnectorServer.java:151) ~[jetty-jmx-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[jetty-util-9.4.35.v20201120.jar:9.4.35.v20201120] at org.jivesoftware.openfire.JMXManager.start(JMXManager.java:196) [xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.openfire.JMXManager.getInstance(JMXManager.java:144) [xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.openfire.JMXManager.tryRegister(JMXManager.java:248) [xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.openfire.JMXManager.tryRegister(JMXManager.java:224) [xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.util.TaskEngine.<init>(TaskEngine.java:115) [xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.util.TaskEngine.<clinit>(TaskEngine.java:84) [xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.util.JiveGlobals.loadSecurityProperties(JiveGlobals.java:1302) [xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.util.JiveGlobals.isXMLPropertyEncrypted(JiveGlobals.java:1020) [xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.util.XMLProperties.getProperty(XMLProperties.java:209) [xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.util.XMLProperties.getProperty(XMLProperties.java:174) [xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.util.JiveGlobals.getXMLProperty(JiveGlobals.java:320) [xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.openfire.XMPPServer.initialize(XMPPServer.java:408) [xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.openfire.XMPPServer.start(XMPPServer.java:701) [xmppserver-4.6.4.jar:4.6.4] at org.jivesoftware.openfire.XMPPServer.<init>(XMPPServer.java:263) [xmppserver-4.6.4.jar:4.6.4] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_292] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) [?:1.8.0_292] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [?:1.8.0_292] at java.lang.reflect.Constructor.newInstance(Constructor.java:423) [?:1.8.0_292] at java.lang.Class.newInstance(Class.java:442) [?:1.8.0_292] at org.jivesoftware.openfire.starter.ServerStarter.start(ServerStarter.java:92) [startup.jar:4.6.4] at org.jivesoftware.openfire.starter.ServerStarter.main(ServerStarter.java:56) [startup.jar:4.6.4] Caused by: java.net.BindException: Address already in use (Bind failed) at java.net.PlainSocketImpl.socketBind(Native Method) ~[?:1.8.0_292] at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387) ~[?:1.8.0_292] at java.net.ServerSocket.bind(ServerSocket.java:390) ~[?:1.8.0_292] at java.net.ServerSocket.bind(ServerSocket.java:344) ~[?:1.8.0_292] at org.eclipse.jetty.jmx.ConnectorServer$JMXRMIServerSocketFactory.createServerSocket(ConnectorServer.java:246) ~[jetty-jmx-9.4.35.v20201120.jar:9.4.35.v20201120] at org.eclipse.jetty.jmx.ConnectorServer$JMXRMIServerSocketFactory.createServerSocket(ConnectorServer.java:235) ~[jetty-jmx-9.4.35.v20201120.jar:9.4.35.v20201120] at sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:670) ~[?:1.8.0_292] at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:335) ~[?:1.8.0_292] ... 32 more

Environment

None

Activity

Show:
Fixed

Details

Assignee

Reporter

Fix versions

Priority

Created June 25, 2021 at 11:22 AM
Updated July 21, 2021 at 10:17 AM
Resolved July 21, 2021 at 10:17 AM

Flag notifications