apache / apache/dubbo

configurators节点变更,导致AbstractRegistry.saveProperties()保存的缓存数据丢失了providers信息

Open
#10,151 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
41.6k
Forks
26.4k
Avg merge
15h 13m
Merged PRs (30d)
4

Description

- [ ] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.

### Environment

* Dubbo version: 3.0.5
* Java version: 1.8

### Steps to reproduce this issue

consumer 启动后,引用的provider添加override 信息,provider的configurators下的子节点发生变更

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

### Expected Behavior

缓存数据正常保存

### Actual Behavior

缓存文件中丢失了providers节点下的url信息

### Reason
原因是ZookeeperRegistry在订阅时创建的RegistryChildListenerImpl对象采用了缓存,导致providers, configurators, routers本个节点路由使用的是同一个RegistryChildListenerImpl对象,但是RegistryChildListenerImpl对象中保存了providers的路径用于toUrlsWithEmpty方法中的创建URL动作,导致toUrlsWithEmpty方法认为configurators和routers的url是providers下的url

Contributor guide

Open the contributing guide

Research direction

Start with ZookeeperRegistry and its cached RegistryChildListenerImpl, then trace how providers, configurators, and routers are handled by toUrlsWithEmpty and how AbstractRegistry.saveProperties persists the cache. Reproduce the reported override and configurators-child change scenario, and verify that the saved cache retains the providers node URL information without confusing the three paths.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
distributed-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.