Skip to content

dubbo-go作为服务的consumer,却被认为成了provider,造成dubbo-admin显示无元数据信息,无法调用。 #908

@sherlock-art

Description

@sherlock-art

环境 K8s
dubbo-admin版本 基于master最新分支0.3.0
注册中心 zk
java版本1.8_261

问题描述及现象
dubbo-go作为xxx服务的consumer时,会注册到dubbo-admin上,dubbo-admin却认为它是provider,点击对应的服务测试后,真正的provider信息被覆盖,服务不能再被调用
image
image
image
image

查看源码猜测原因:

  1. 消费者语言为go,用的是dubbo-go,从url中看到registry url 中 side为consumer
    consumer:///com.xxx.service.api.CustomerApi?app.version=1.0.0&application=xxx&async=false&bean.name=ServiceBean:com.xxx.service.api.CustomerApi:1.0.0&check=false&cluster=failover&environment=environment&generic=false&group=group&interface=com.xxx.service.api.CustomerApi&ip=10.46.19.116&loadbalance=loadbalance&methods.findCustomerByTeamUid.loadbalance=methods.findCustomerByTeamUid.loadbalance&methods.findCustomerByTeamUid.retries=1&methods.findCustomerByTeamUid.sticky=false&methods.getPrimaryServiceGroupByCustomerUid.loadbalance=methods.getPrimaryServiceGroupByCustomerUid.loadbalance&methods.getPrimaryServiceGroupByCustomerUid.retries=1&methods.getPrimaryServiceGroupByCustomerUid.sticky=false&module=dubbo-go client&name=xxx&organization=dubbo.io&owner=owner&protocol=rest&provided-by=provided-by&reference.filter=cshutdown&registry.role=0&release=dubbo-golang-1.5.6&retries=retries&side=consumer&sticky=false&version=1.0.0

  2. 由于RegistryServerSync#notify()这里的逻辑,如果category为null则默认为provider,把消费者变成了生产者,覆盖了真正的生产者
    image

3.源码处增加side的判断
image

请问这样做,是否合理呢,如果合理,麻烦采纳一下,谢谢!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions