dubbo icon indicating copy to clipboard operation
dubbo copied to clipboard

不同版本超时时间的兼容问题

Open tiancaipei opened this issue 2 years ago • 10 comments

旧com.alibaba.dubbo版本:2.5.9 新org.apache.dubbo版本:2.7.17

问题:旧的dubbo中设置过期时间放在字段default.timeout中,但是新的版本是在timeout中直接取值,会导致在旧的版本中设置的超时时间无效 image image 这样的情况该如何兼容?

tiancaipei avatar Oct 24 '22 03:10 tiancaipei

org/apache/dubbo/common/URLStrParser.java:300

            // compatible with lower versions registering "default." keys
            if (name.startsWith(DEFAULT_KEY_PREFIX)) {
                params.putIfAbsent(name.substring(DEFAULT_KEY_PREFIX.length()), value);
            }

这里会自动替换

AlbumenJ avatar Oct 24 '22 04:10 AlbumenJ

org/apache/dubbo/common/URLStrParser.java:300

            // compatible with lower versions registering "default." keys
            if (name.startsWith(DEFAULT_KEY_PREFIX)) {
                params.putIfAbsent(name.substring(DEFAULT_KEY_PREFIX.length()), value);
            }

这里会自动替换

我看了一下这里的代码,好像是zk作为注册中心才会去执行,我们的注册中心是nacos,这里的代码没有执行到

tiancaipei avatar Oct 24 '22 05:10 tiancaipei

@tiancaipei 3.1.2是否存在这个问题?

CrazyHZM avatar Nov 17 '22 06:11 CrazyHZM

旧版本作为消费者,新版本作为生产者的情况下,就旧版本设置超时时间'default.timeout',新版本取不到'default.timeout',只能取'timeout' 是这样吗?

githublaohu avatar Nov 17 '22 11:11 githublaohu

org/apache/dubbo/common/URLStrParser.java:300

            // compatible with lower versions registering "default." keys
            if (name.startsWith(DEFAULT_KEY_PREFIX)) {
                params.putIfAbsent(name.substring(DEFAULT_KEY_PREFIX.length()), value);
            }

这里会自动替换

我看了一下这里的代码,好像是zk作为注册中心才会去执行,我们的注册中心是nacos,这里的代码没有执行到

请问下在'ZookeeperRegistry'的哪行代码调用的?

githublaohu avatar Nov 18 '22 00:11 githublaohu

org/apache/dubbo/common/URLStrParser.java:300

            // compatible with lower versions registering "default." keys
            if (name.startsWith(DEFAULT_KEY_PREFIX)) {
                params.putIfAbsent(name.substring(DEFAULT_KEY_PREFIX.length()), value);
            }

这里会自动替换

我看了一下这里的代码,好像是zk作为注册中心才会去执行,我们的注册中心是nacos,这里的代码没有执行到

请问下在'ZookeeperRegistry'的哪行代码调用的?

org.apache.dubbo.registry.zookeeper.ZookeeperRegistry#toUrlsWithoutEmpty

tiancaipei avatar Nov 18 '22 03:11 tiancaipei

@tiancaipei 3.1.2是否存在这个问题?

我尝试了一下,还是存在这个问题的 企业微信截图_16687532815561 企业微信截图_16687532541250 企业微信截图_16687533793393 企业微信截图_16687533702744 企业微信截图_16687531413426

tiancaipei avatar Nov 18 '22 06:11 tiancaipei

我通过如下方法解决了问题,不使用全局的默认超时时间,针对每个接口设置超时时间 @Service(version = "1.0", timeout = 1000),接口级的超时时间字段就是timeout,两个版本可以兼容

tiancaipei avatar Nov 18 '22 06:11 tiancaipei

Too powerful

zzh820364599 avatar Nov 21 '22 02:11 zzh820364599

look at this: https://github.com/apache/dubbo/pull/11385

aamingaa avatar Jan 29 '23 11:01 aamingaa