技术改变人生

注意dubb2.7.4版本的一个bug

2019-12-16  本文已影响0人  keker_zzzZ

原因

  1. 今天给公司搭建一个新项目,所以想升级dubbo版本,现在dubbo最新版本是2.7.4.1, 当时想可能不太稳定,所以就往前推一个版本使用了2.7.4。 结果悲剧发生了,下面请看详细分析。


    version.png
  1. dubbo使用zookeeper作为注册中心dubbo.registry.protocol=zookeeper,当客户端使用zkclient dubbo.registry.client=zkclient的时候, 启动服务就出现了空指针异常,感觉这样抛出异常跟突兀。所以就跟了一下源码,看下图发现问题了吗。 ConfigCenterConfig cc = configManager.getConfigCenter().orElse(new ConfigCenterConfig()); 这行代码执行orElse操作的时候并不会初始化new ConfigCenterConfig()的成员变量private Map<String, String> parameters;,然后再执行cc.getParameters().put() 操作就出现空指针吗? 所以此处肯定是代码逻辑不够严谨造成的。
    dubbo2.7.4.png
dubbo2.7.4.png

3.但是2.7.4.1已经解决了此问题,下图是dubbo2.7.4.1版本的源码。很明显先进行了判断if (cc.getParameters() == null) { cc.setParameters(new HashMap<>()); }

dubbo2.7.4.1.png

总结

本想着dubbo2.7.4会稳定点,没想到就发现了这个bug,但是dubbo还是在下个小版本把该问题给解决了,但是也给自己一个提示不管做开源还是公司内部系统,都要全面考虑兼容性和有可能出现异常的情况,特别是外部系统调用的时候异常提示是否明确都是要考虑的。

上一篇 下一篇

猜你喜欢

热点阅读