hertz-contrib / registry

The service registration & discovery extensions for Hertz
Apache License 2.0
27 stars 39 forks source link

nacos Resolve方法错误的过滤了结果 #93

Closed KafuuEriri closed 11 months ago

KafuuEriri commented 11 months ago

Describe the bug

使用nacos作为注册中心,成功注册了服务端,客户端请求时报错service not found

To Reproduce 定义到问题出自https://github.com/hertz-contrib/registry/blob/133a1ea5b0d078bbd9b76997ffa3706edb1f2557/nacos/resolver.go#L108

Steps to reproduce the behavior:

image image

是否应该增加一个判断当metadata为空时不执行compareMaps Expected behavior

A clear and concise description of what you expected to happen.

Screenshots

If applicable, add screenshots to help explain your problem.

Hertz version:

0.6.7

Environment:

1.21

Additional context

Add any other context about the problem here.

li-jin-gou commented 11 months ago

@KafuuEriri 可以提个 PR 修复一下它嘛

li-jin-gou commented 11 months ago

cc @Skyenought

Skyenought commented 11 months ago

server 测有设置 tag 吗?

KafuuEriri commented 11 months ago

server 测有设置 tag 吗?

server是java服务带了preserved.register.source=SPRING_CLOUD,客户端使用了hz client

Skyenought commented 11 months ago

请问你 res[0] 的 metadata 里面真的是空的吗?

KafuuEriri commented 11 months ago

请问你 res[0] 的 metadata 里面真的是空的吗?

var metadata map[string]string
    serviceName := desc

    // Get serviceName and metadata from desc
    if strings.Contains(desc, "?") {
        queries, _ := url.Parse(desc)
        tags, _ := url.ParseQuery(queries.Query().Encode())

        result := make(map[string]string)
        for key, value := range tags {
            result[key] = value[0]
        }
        metadata = result
        serviceName = strings.Split(desc, "?")[0]
    }

空的metadata来自这段代码,res中的metadata为 preserved.register.source -> SPRING_CLOUD