dubbo AbstractConfig中equals方法不比较id导致找不到registry

zyfwsgd6  于 4个月前  发布在  其他
关注(0)|答案(2)|浏览(49)
  • I have searched the issues of this repository and believe that this is not a duplicate.

Environment

  • Dubbo version: 3.1.9
  • Java version: 1.8

Steps to reproduce this issue

  1. A和B两个项目client定义同样的registry内容,定义不同的id,A和B两个client中分别定义了几个consumer,使用不同的registry id
  2. C项目同时引用了A和B两个client,启动时就会报错找不到A或B其中一个registry
  3. 原因是AbstractConfigManager的165行判断value.equals(config)时,equals方法中不比较id。为什么要忽略id的对比?

Pls. provide [GitHub address] to reproduce this issue.

Expected Behavior

如果没有其他特殊逻辑,equals比较id这个重要属性,允许不同项目配置相同内容而不同id的registry

Actual Behavior

If there is an exception, please attach the exception trace:

Just put your stack trace here!
7tofc5zh

7tofc5zh1#

因为 id 在一些场景下是会自动生成的,导致 equals 不通过,因此出现配置一致性检查错误的情况。(主要是 ApplicationConfig 这种)

7vux5j2d

7vux5j2d2#

对于一些 Config(比如 Registry、Reference、Service)可以考虑判断 id

相关问题