saturn 升级curator的坑

240 阅读1分钟

saturn 升级curator的坑

由于我们现有的saturn使用的是较低版本,其中curator 为2.10.0 ,zookeeper的版本客户端使用3.4.6,服务端为3.4.10。

当前job 数量很多,导致zookeeper 的zxid 耗尽,耗尽之后会触发watch的重新创建。一次性上传的数据量太大,最后导致curator 疯狂打印日志 retry gave up。

升级curator版本到4.X。

其中TreeCache 的有个变化就是关于线程池的设置,saturn的设计中,每一个namespace使用同一个线程池(ShardingTreeCacheService),用于监听 job的SaturnExecutorsSaturnExecutors 和Job 下的事件。但是Curator 2.10.0 版本中会判断是否需要shutdown 改线程池,4.X却直接干掉了这个线程池。导致后如果出现删除节点,触发removeTreeCache或者任何一个TreeCahce被close,都会关闭该线程池,导致无法对该namespace 下的未分片的job进行分片

服务端会报错说executor rejectedException且executor的状态为 termined

其实zookeeper的长度问题,仅需要升级client版本到大于3.4.6就可以了。