jenkinsci / jenkinsci/plugin-installation-manager-tool
Port already in use when jmx enabled
- Dominant language
- Java
- Stars
- 463
- Forks
- 228
- Avg merge
- 31m
- Merged PRs (30d)
- 15
Description
### Jenkins and plugins versions report
Environment
```text
Paste the output here
```
### What Operating System are you using (both controller, and any agents involved in the problem)?
Image - jenkins/jenkins:2.387.2-lts-jdk11
Helm chart -https://github.com/jenkinsci/helm-charts - v4.3.21
AWS EKS v1.25 - m7g.8xlarge - arm64
### Reproduction steps
Enable JMX when installing jenkins
Example
https://github.com/jenkinsci/helm-charts/blob/main/charts/jenkins/values.yaml#L231-L235
```
javaOpts: >
-Dcom.sun.management.jmxremote.port=4000
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
jmxPort: 4000
```
Try to run jenkins-plugin-cli on jenkins instance
```
Error: JMX connector server communication error: service:jmx:rmi://jenkins-sandbox-0:4000
jdk.internal.agent.AgentConfigurationError: java.rmi.server.ExportException: Port already in use: 4000; nested exception is
```
### Expected Results
Be able to run jenkins-plugin-cli without error when jmx is enabled on jenkins
### Actual Results
```
jenkins@jenkins-sandbox-0:/$ jenkins-plugin-cli --version
Error: JMX connector server communication error: service:jmx:rmi://jenkins-sandbox-0:4000
jdk.internal.agent.AgentConfigurationError: java.rmi.server.ExportException: Port already in use: 4000; nested exception is:
java.net.BindException: Address already in use (Bind failed)
at jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap.exportMBeanServer(ConnectorBootstrap.java:820)
at jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap.startRemoteConnectorServer(ConnectorBootstrap.java:479)
at jdk.management.agent/jdk.internal.agent.Agent.startAgent(Agent.java:447)
at jdk.management.agent/jdk.internal.agent.Agent.startAgent(Agent.java:599)
Caused by: java.rmi.server.ExportException: Port already in use: 4000; nested exception is:
java.net.BindException: Address already in use (Bind failed)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:335)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:243)
at java.rmi/sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:412)
at java.rmi/sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147)
at java.rmi/sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:234)
at jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap$PermanentExporter.exportObject(ConnectorBootstrap.java:203)
at java.management.rmi/javax.management.remote.rmi.RMIJRMPServerImpl.export(RMIJRMPServerImpl.java:153)
at java.management.rmi/javax.management.remote.rmi.RMIJRMPServerImpl.export(RMIJRMPServerImpl.java:138)
at java.management.rmi/javax.management.remote.rmi.RMIConnectorServer.start(RMIConnectorServer.java:473)
at jdk.management.agent/sun.management.jmxremote.ConnectorBootstrap.exportMBeanServer(ConnectorBootstrap.java:816)
... 3 more
Caused by: java.net.BindException: Address already in use (Bind failed)
at java.base/java.net.PlainSocketImpl.socketBind(Native Method)
at java.base/java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:452)
at java.base/java.net.ServerSocket.bind(ServerSocket.java:395)
at java.base/java.net.ServerSocket.(ServerSocket.java:257)
at java.base/java.net.ServerSocket.(ServerSocket.java:149)
at java.rmi/sun.rmi.transport.tcp.TCPDirectSocketFactory.createServerSocket(TCPDirectSocketFactory.java:45)
at java.rmi/sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:670)
at java.rmi/sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:324)
... 12 more
```
### Anything else?
Changing the jmx port has the same outcome
Contributor guide
Research direction
Start by reproducing the failure with JMX enabled on port 4000 and running `jenkins-plugin-cli --version`. Then trace the CLI startup path that initializes or connects to JMX; done means the command runs successfully when Jenkins already has JMX enabled, including when the configured port is changed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- cli
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100