旧com.alibaba.dubbo版本:2.5.9 新org.apache.dubbo版本:2.7.17
问题:旧的dubbo中设置过期时间放在字段default.timeout中,但是新的版本是在timeout中直接取值,会导致在旧的版本中设置的超时时间无效 这样的情况该如何兼容?
旧com.alibaba.dubbo版本:2.5.9 新org.apache.dubbo版本:2.7.17
问题:旧的dubbo中设置过期时间放在字段default.timeout中,但是新的版本是在timeout中直接取值,会导致在旧的版本中设置的超时时间无效 这样的情况该如何兼容?
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 3.1.2是否存在这个问题?
旧版本作为消费者,新版本作为生产者的情况下,就旧版本设置超时时间'default.timeout',新版本取不到'default.timeout',只能取'timeout' 是这样吗?
请问下在'ZookeeperRegistry'的哪行代码调用的?
org.apache.dubbo.registry.zookeeper.ZookeeperRegistry#toUrlsWithoutEmpty
@tiancaipei 3.1.2是否存在这个问题?
我尝试了一下,还是存在这个问题的
我通过如下方法解决了问题,不使用全局的默认超时时间,针对每个接口设置超时时间 @Service(version = "1.0", timeout = 1000),接口级的超时时间字段就是timeout,两个版本可以兼容
Too powerful
look at this: https://github.com/apache/dubbo/pull/11385