-
Notifications
You must be signed in to change notification settings - Fork 12k
Open
Description
Before Creating the Bug Report
- I found a bug, not just asking a question, which should be created in GitHub Discussions.
- I have searched the GitHub Issues and GitHub Discussions of this repository and believe that this is not a duplicate.
- I have confirmed that this bug belongs to the current repository, not other repositories of RocketMQ.
Runtime platform environment
All platforms
RocketMQ version
develop branch (latest)
JDK Version
All
Describe the Bug
In DefaultHAConnection (line 64) and AutoSwitchHAConnection (line 109), .toString() is called directly on the return value of getRemoteSocketAddress() without a null check:
this.clientAddress = this.socketChannel.socket().getRemoteSocketAddress().toString();According to the Java documentation, Socket.getRemoteSocketAddress() returns null if the socket is not connected. In edge cases (e.g., the socket is accepted but the remote peer disconnects before the HA connection constructor completes), this can throw a NullPointerException, which would crash the HA connection setup.
Steps to Reproduce
- Under network instability, a slave connects and immediately disconnects
- The master accepts the socket channel
DefaultHAConnectionconstructor is calledgetRemoteSocketAddress()returns null because the peer has already disconnected.toString()on null throws NPE
What Did You Expect to See?
The HA connection should handle null remote address gracefully.
What Did You See Instead?
NullPointerException in the HA connection constructor.
Additional Context
Affected files:
store/src/main/java/org/apache/rocketmq/store/ha/DefaultHAConnection.java:64store/src/main/java/org/apache/rocketmq/store/ha/autoswitch/AutoSwitchHAConnection.java:109
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels