apache / dubbo

The java implementation of Apache Dubbo. An RPC and microservice framework.
https://dubbo.apache.org/
Apache License 2.0
40.46k stars 26.42k forks source link

[Bug] Dubbo 3.2.11 , use dual registries(ZK+Nacos),provider defined timeout expires(consumer no timeout specified) #14336

Closed mrwangyin closed 3 months ago

mrwangyin commented 4 months ago

Pre-check

Search before asking

Apache Dubbo Component

Java SDK (apache/dubbo)

Dubbo Version

3.2.11

Steps to reproduce this issue

consumer configuration:

spring.application.name=dubbo-springboot-demo-consumer
server.port=9999
dubbo.application.name=${spring.application.name}
dubbo.protocol.name=dubbo
dubbo.protocol.host=172.16.1.16
dubbo.protocol.port=20888

dubbo.registries.nacos-registry.address=nacos://10.10.10.203:8848?username=nacos&password=nacos
dubbo.registries.nacos-registry.default=true
dubbo.registries.nacos-registry.timeout=11000
dubbo.registries.nacos-registry.use-as-config-center=false
dubbo.registries.nacos-registry.use-as-metadata-center=false
dubbo.registries.nacos-registry.parameters.namespace=dubbo_timeout
#dubbo.registries.nacos.parameters.group=registry-center
dubbo.registries.nacos-registry.register-mode=instance
dubbo.registries.nacos-registry.parameters.register-consumer-url=true
dubbo.registries.zk-registry.preferred=true

dubbo.registries.zk-registry.address=zookeeper://127.0.0.1:2181
dubbo.registries.zk-registry.default=true
dubbo.registries.zk-registry.timeout=8000
dubbo.registries.zk-registry.use-as-config-center=false
dubbo.registries.zk-registry.use-as-metadata-center=false
dubbo.registries.zk-registry.register-mode=instance

dubbo.config-centers.zk-registry.address=${dubbo.registries.zk-registry.address}
dubbo.config-centers.zk-registry.timeout=13000

dubbo.config-centers.nacos-registry.address=${dubbo.registries.nacos-registry.address}
dubbo.config-centers.nacos-registry.timeout=14000
dubbo.config-centers.nacos-registry.parameters.namespace=${dubbo.registries.nacos-registry.parameters.namespace}
dubbo.config-centers.nacos-registry.parameters.group=config-center

dubbo.metadata-reports.zk-registry.address=${dubbo.registries.zk-registry.address}
dubbo.metadata-reports.zk-registry.timeout=15000

dubbo.metadata-reports.nacos-registry.address=${dubbo.registries.nacos-registry.address}
dubbo.metadata-reports.nacos-registry.timeout=16000
dubbo.metadata-reports.nacos-registry.parameters.namespace=${dubbo.registries.nacos-registry.parameters.namespace}
dubbo.metadata-reports.nacos-registry.parameters.group=metadata-center

provider configuration:

spring.application.name=dubbo-springboot-demo-provider
server.port=8888
dubbo.application.name=${spring.application.name}
dubbo.protocol.name=dubbo
dubbo.protocol.host=172.16.1.16
dubbo.protocol.port=20889

dubbo.registries.nacos-registry.address=nacos://10.10.10.203:8848?username=nacos&password=nacos
dubbo.registries.nacos-registry.default=true
dubbo.registries.nacos-registry.timeout=11000
dubbo.registries.nacos-registry.use-as-config-center=false
dubbo.registries.nacos-registry.use-as-metadata-center=false
dubbo.registries.nacos-registry.parameters.namespace=dubbo_timeout
#dubbo.registries.nacos.parameters.group=registry-center
dubbo.registries.nacos-registry.register-mode=instance
dubbo.registries.nacos-registry.parameters.register-consumer-url=true
dubbo.registries.zk-registry.preferred=true

dubbo.registries.zk-registry.address=zookeeper://127.0.0.1:2181
dubbo.registries.zk-registry.default=true
dubbo.registries.zk-registry.timeout=9000
dubbo.registries.zk-registry.use-as-config-center=false
dubbo.registries.zk-registry.use-as-metadata-center=false
dubbo.registries.zk-registry.register-mode=instance

dubbo.config-centers.zk-registry.address=${dubbo.registries.zk-registry.address}
dubbo.config-centers.zk-registry.timeout=13000

dubbo.config-centers.nacos-registry.address=${dubbo.registries.nacos-registry.address}
dubbo.config-centers.nacos-registry.timeout=14000
dubbo.config-centers.nacos-registry.parameters.namespace=${dubbo.registries.nacos-registry.parameters.namespace}
dubbo.config-centers.nacos-registry.parameters.group=config-center

dubbo.metadata-reports.zk-registry.address=${dubbo.registries.zk-registry.address}
dubbo.metadata-reports.zk-registry.timeout=15000

dubbo.metadata-reports.nacos-registry.address=${dubbo.registries.nacos-registry.address}
dubbo.metadata-reports.nacos-registry.timeout=16000
dubbo.metadata-reports.nacos-registry.parameters.namespace=${dubbo.registries.nacos-registry.parameters.namespace}
dubbo.metadata-reports.nacos-registry.parameters.group=metadata-center

When the app initializes invoker,DEBUG will enter the code block below: image

When the consumer calls the provider (timeout is specified), the consumer side will use dubbo.registries.zk-registry.timeout = 8000 as the timeout, which will cause the timeout defined by the provider to expire;

provider timeout for configuration: image

consumer no timeout configured image

Anything else

No response

Are you willing to submit a pull request to fix on your own?

Code of Conduct

What you expected to happen

Use the correct timeout

Anything else

No response

Are you willing to submit a pull request to fix on your own?

Code of Conduct

mrwangyin commented 4 months ago

@AlbumenJ

AlbumenJ commented 4 months ago

Configure timeout on registry is meanless now. I think we should remove it in the future.