[alibaba/nacos]nacos2.0.3集群中节点shutdown后再次启动, readyToUpgrade 字段丢失

2024-07-18 513 views
6

nacos2.0.3集群中节点shutdown后再次启动, readyToUpgrade 字段丢失

集群信息如下图: 屏幕快照 2021-11-11 下午6 46 15

shutdown 集群节点【10.3.17.175:8868】之后,再次启动此节点,节点元信息里边readyToUpgrade 没有了,这个是怎么回事? 节点元信息如下图: 屏幕快照 2021-11-11 下午6 55 11

屏幕快照 2021-11-11 下午6 57 17

回答

8

@anryHan 跟踪源码发现,shutdown 节点之后,首先进行参数处理的 MemberUtil.multiParse(params) 方法内部,又调用了 singleParse 方法,最终在 singleParse 方法内部,并没有同步更新 readyToUpgrade 属性: image 图中红框圈起来的注释部分是我改动的代码,该方法的最后部分,节点 shutdown 之后,只写回了默认的 Nacos 端口,并没有同步更新 readyToUpgrade 属性,放开代码注释部分,readyToUpgrade 字段正常显示。

1

你可以提交一个pr 让 @realJackSun 帮你review 下

3

感觉,是不是把自己的元数据持久化到cluster.conf比较好?

9

@chuntaojun 貌似不可以,这个是对 Nacos 中的服务节点之元数据进行操作,如果持久化到 cluster.conf ,当发生服务节点切换时,会频繁更新 cluster.conf 文件,增加 Nacos 的 IO 压力,这种更新操作应该比只更新一个对象元数据的引用开销要高很多。

2

@realJackSun 针对本 issue 的修改,已经提交了 PR ,希望您能看下,谢谢

4

提交了 PR 没人管了吗,有没有结果说句话啊??

2

这里可以直接设置true吗? 要全部ready才能设置为true,如果之前是false的话,会不会走到这里来

2

单节点模式下可以直接设置,集群模式下需要同步修改,无论是单节点模式还是集群模式,源码中都遗漏了对于 readyToUpgrade 字段逻辑的更新。

4

所以我说源码中都遗漏了对于 readyToUpgrade 字段逻辑的更新。 还有就是这部分的逻辑,我跟官方沟通了下,这部分逻辑可能后期需要变更,具体的看官方怎么说吧。

2

收到,感谢贡献。社区正在Review,之后同步给您进展。