kitex-contrib / registry-etcd

Apache License 2.0
20 stars 23 forks source link

待修复 #41

Closed pp292 closed 3 days ago

pp292 commented 1 week ago

版本 go 1.22.2

github.com/kitex-contrib/registry-etcd v0.2.4

服务注册 etcd.NewEtcdRegistryWithRetry 链接etcd一定要设置 etcd.WithEtcdServicePrefix(""),否则默认的Prefix: "kitex/registry-etcd"形同虚设。

默认不设置 etcd.WithEtcdServicePrefix 情况下,服务注册并没有设置 kitex/registry-etcd 前缀,而client去请求找etcd服务的时候,又会根据 kitex/registry-etcd 前缀去找。

导致一直出错,提示 service discovery error: no instance remains for XXXX

DMwangnima commented 1 week ago

方便看一下你在 server 侧的代码么?

pp292 commented 1 week ago
retryConfig := retry.NewRetryConfig(
    retry.WithMaxAttemptTimes(config.MaxAttemptTimes)),
    retry.WithObserveDelay(config.ObserveDelay*time.Second),
    retry.WithRetryDelay(config.RetryDelay*time.Second),
)
r, err = etcd.NewEtcdRegistryWithRetry(config.Hosts, retryConfig)

这个代码会出现错误,但是设置前缀后正常了。

retryConfig := retry.NewRetryConfig(
    retry.WithMaxAttemptTimes(config.MaxAttemptTimes)),
    retry.WithObserveDelay(config.ObserveDelay*time.Second),
    retry.WithRetryDelay(config.RetryDelay*time.Second),
)
r, err = etcd.NewEtcdRegistryWithRetry(config.Hosts, retryConfig, etcd.WithEtcdServicePrefix(""))

使用 /usr/local/etcd/etcdctl get "" --prefix --keys-only 看过注册的服务,确实是新注册的服务没有kitex/registry-etcd前缀

GuangmingLuo commented 1 week ago

@pp292 请遵守社区守则,友善反馈问题,我们不欠你啥,“巨坑”是啥意思?开源项目使用过程中遇到问题提出问题解决问题即可。

DMwangnima commented 1 week ago

@pp292 这里确实遗漏了注入 prefix 到 etcdRegistry 中 image 有兴趣提个 PR 修复下么? 另外可以修改一下 issue 标题么,我们的 kitex-contrib 项目是社区同学在百忙中抽出时间贡献得到的,“巨坑”确实有些言重了。

pp292 commented 1 week ago

@pp292 这里确实遗漏了注入 prefix 到 etcdRegistry 中 image 有兴趣提个 PR 修复下么? 另外可以修改一下 issue 标题么,我们的 kitex-contrib 项目是社区同学在百忙中抽出时间贡献得到的,“巨坑”确实有些言重了。

你的回复比较客观,不像有些同学。

DMwangnima commented 6 days ago

@pp292 v0.2.5 已修复这个问题,请试用一下。如果 ok 的话,这个 issue 可以 close 了。

li-jin-gou commented 6 days ago

这个 PR 引入的 bug https://github.com/kitex-contrib/registry-etcd/pull/34 cc @logicwu0