dubbo
dubbo copied to clipboard
[Bug] Type inconsistency in RpcServiceContext.localInvoke field causes NullPointerException
Pre-check
- [x] I am sure that all the content I provide is in English.
Search before asking
- [x] I had searched in the issues and found no similar issues.
Apache Dubbo Component
Java SDK (apache/dubbo)
Dubbo Version
dubbo-cluster-sepcify-address-dubbo3:3.3.1
Bug Description
There's a type inconsistency in RpcServiceContext class that can cause NullPointerException:
- Field
localInvokeis declared asBoolean(wrapper type) with initial valuenull - Method
setLocalInvoke(boolean localInvoke)acceptsboolean(primitive type)
Code Location
- File:
dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/RpcServiceContext.java - Field declaration: Line 60
- Setter method: Lines 628-630
Steps to reproduce this issue
When trying to restore the original localInvoke value:
Boolean originalLocalInvoke = RpcContext.getServiceContext().getLocalInvoke(); // returns null
try {
if (!LocalContextConfig.getServerAddress().equals(ip)) {
RpcContext.getServiceContext().setLocalInvoke(false);
}
UserSpecifiedAddressUtil.setAddress(new Address(ip, port, false));
} finally {
// Later trying to restore:
RpcContext.getServiceContext().setLocalInvoke(originalLocalInvoke); // NPE when originalLocalInvoke is null
}
### What you expected to happen
Change the setter method to accept Boolean type: setLocalInvoke(Boolean localInvoke)
### Anything else
_No response_
### Are you willing to submit a pull request to fix on your own?
- [x] Yes I am willing to submit a pull request on my own!
### Code of Conduct
- [x] I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct)
could you provide a pr?