BurningCN
BurningCN
I'll go ahead and finish this and merge into 3.1
latest pr #10658
> https://github.com/apache/dubbo/blob/7a33ddf93c43f9de8e45e7bc80a22a04beecf654/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/client/event/listener/ServiceInstancesChangedListener.java#L171 > > provider重启后,consumer一直在这个方法重试 171行提交延迟10s的AddressRefreshRetryTask到线程池 10s后会走到523行ServiceInstancesChangedListener.this.onEvent(retryEvent); 如果还是连不上,就又走到171行 > > 但是服务已经被重启,这里一直在重试旧的实例,就进入死循环了 你好,描述中提到"重试旧的实例",是旧实例一直都存在于容器没被剔除吗?
Thank you, looking at the todo here, there is no `classloader` dimension added to the access of services. Does it need to be improved? 
BCD三个类在注入依赖bean的时候,因为这三的属性名称一样且类型不一样(会走入你前面截图的逻辑里),按理注入的beanName应该分别为userInfo、userInfo#2、userInfo#3。我理解应该不会出现你所描述的 `beanDefinitionRegistry没有找到已经注册的bean`,我本地试了下没有问题,方便的话可以发一下你的demo我本地复现一下。
@liufeiyu1002 感谢,分析很详细透彻。也是因为 `postProcessBeanFactory` 和 `postProcessMergedBeanDefinition` 对`registerReferenceBean`方法的重复调用,没有处理好同一个bean在beanName冲突对别名处理的可重入问题。一个bean(C类)因为beanName冲突而注册了别名(userInfo#2),但是在重复调用的时候(依然是这个bean),没有处理先前该bean(C类)已经注册过的别名(userInfo#2),导致起新的别名(userInfo#3)并注册,而其他bean(D类)若也用了这个别名(userInfo#3),导致相同的别名(userInfo#3)注册到不同的原beanName(test和userInfo#2)上,就出现了问题。 c类 beanDefinitionRegistry.registerAlias("test", "userInfo#2") beanDefinitionRegistry.registerAlias("test", "**userInfo#3**") d类 beanDefinitionRegistry.registerAlias("userInfo#2", "**userInfo#3**") // 在该处执行时,因为userInfo#3这个别名先前给test了,这里又想给userInfo#2,就发生了一些问题
PR #10359, by [liufeiyu1002](https://github.com/liufeiyu1002)