- Severity: Medium
- Location:
shenyu-client/shenyu-client-dubbo/shenyu-client-apache-dubbo/src/main/java/org/apache/shenyu/client/apache/dubbo/processor/extractor/DubboServiceProcessor.java:52,57 (writes "rpcExt"); shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/register/registrar/ApiDocRegistrarImpl.java:113 (reads "RpcExt"); shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/register/registrar/AbstractApiDocRegistrar.java:140 (reads "RpcExt")
Description:
DubboServiceProcessor writes the rpcExt property with key "rpcExt" (lowercase r). Both ApiDoc registrars read it with key "RpcExt" (uppercase R). java.util.Properties (extends Hashtable) is case-sensitive, so getPropertiesValue("RpcExt") returns null when the key stored is "rpcExt". The old path reads rpcExt from the MetaDataRegisterDTO object directly (metaData.getRpcExt()), so it works. The new-path registrars read from the Properties map where the case doesn't match.
Impact:
In the new registrar path, the ApiDoc ext JSON for Dubbo services has rpcExt: null instead of group/version/loadbalance/retries/timeout/cluster/serialization data.
Suggested fix:
Standardize on "rpcExt" (lowercase) in both writer and readers.
Confidence: High
Identified during the 2026-08-02 deep re-scan; full list in docs/scan2-2026-08-02/06-medium-tiers.md.
shenyu-client/shenyu-client-dubbo/shenyu-client-apache-dubbo/src/main/java/org/apache/shenyu/client/apache/dubbo/processor/extractor/DubboServiceProcessor.java:52,57(writes"rpcExt");shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/register/registrar/ApiDocRegistrarImpl.java:113(reads"RpcExt");shenyu-client/shenyu-client-core/src/main/java/org/apache/shenyu/client/core/register/registrar/AbstractApiDocRegistrar.java:140(reads"RpcExt")Description:
DubboServiceProcessorwrites the rpcExt property with key"rpcExt"(lowercase r). Both ApiDoc registrars read it with key"RpcExt"(uppercase R).java.util.Properties(extendsHashtable) is case-sensitive, sogetPropertiesValue("RpcExt")returns null when the key stored is"rpcExt". The old path reads rpcExt from theMetaDataRegisterDTOobject directly (metaData.getRpcExt()), so it works. The new-path registrars read from the Properties map where the case doesn't match.Impact:
In the new registrar path, the ApiDoc ext JSON for Dubbo services has
rpcExt: nullinstead of group/version/loadbalance/retries/timeout/cluster/serialization data.Suggested fix:
Standardize on
"rpcExt"(lowercase) in both writer and readers.Confidence: High
Identified during the 2026-08-02 deep re-scan; full list in
docs/scan2-2026-08-02/06-medium-tiers.md.