Alanxtl opened a new issue, #3353: URL: https://github.com/apache/dubbo-go/issues/3353
### 背景 `#2534` 将 metadata 相关逻辑集中到 metadata 模块后,应用级 metadata 通过全局状态维护本地 `MetadataInfo`、metadata report instances 和 `MetadataService`。这个 issue 只讨论应用级 metadata 主链路的并发安全。 相关代码: - `metadata/metadata.go` - `metadata/info/metadata_info.go` - `metadata/report_instance.go` - `registry/servicediscovery/service_instances_changed_listener_impl.go` ### 当前问题 当前多处核心状态是 map,但缺少清晰同步保护: - `registryMetadataInfo` 是全局 map - `MetadataInfo.Services` / `exportedServiceURLs` / `subscribedServiceURLs` 是 map - metadata report `instances` 是全局 map - 注册、订阅、实例变更、metadata service 查询可能并发发生 这可能带来 data race、stale read、并发 map 写 panic 等问题。 ### 建议 - 为 metadata 全局状态增加明确的锁或并发安全容器 - 明确 `MetadataInfo` 的并发读写模型 - 在注册、注销、订阅、取消订阅、metadata service 查询链路补充并发测试 - 使用 `go test -race` 覆盖 metadata / servicediscovery 关键路径 - 避免直接暴露可被外部修改的内部 map / slice -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
