一个排序引发的BUG (5)

https://github.com/apache/dubbo/issues/2180

一个排序引发的BUG

里面说:Dubbo 源码中没有使用 after 和 before,且排序是存在问题的。

于是这两个方法,在 2.7.0 版本之后,被标注为不建议使用,宣告了该方法的死亡。

我不知道 2012 年,梁飞为什么引入了这两个方法,我也曾想从他的代码提交记录上找到点蛛丝马迹,可惜没有。

但是,有了另外的一个想法:

当年梁飞引入这两个方法后,他写的比较器,是否考虑到了这样的情况呢?

于是我马上又看了比较器的代码提交记录:

org.apache.dubbo.common.extension.support.ActivateComparator

一个排序引发的BUG

并且把他的代码拷贝了出来,用同样的测试用例跑了一下:

一个排序引发的BUG

很遗憾,也有一样的问题。

或许,当年就不应该引入这两个方法。

大道至简,学 Spring 的 Order,就只有一个 Order:

一个排序引发的BUG

然后我又突然想了另外一个框架:SofaRPC。

SofaRPC 和 Dubbo 和 HSF 之间有着千丝万缕的爱恨情仇,于是我去瞅了一眼 SofaRPC 对应的地方:

com.alipay.sofa.rpc.ext.Extension

一个排序引发的BUG

用于排序的,也就只是保留了 order。

这样比较器的代码就很简单了:

com.alipay.sofa.rpc.common.struct.OrderedComparator

一个排序引发的BUG

另外,我顺便对比了一下梁飞最早写的比较器和现在最新的比较器的代码,功能完全一样,但是代码却差异较大:

一个排序引发的BUG

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypsgd.html