You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
xiaoquanidea
changed the title
1.3.2nacos<--->2.2.3nacos双向同步时,暂停其中的一个task,重启jvm会抛出空指针 异常
nacos1.3.2<--->nacos2.2.3双向同步时,暂停其中的一个task,重启jvm会抛出空指针异常;暂停task服务不会停止心跳续活;
Nov 3, 2023
是的,加了一些注释,修复了ALL task服务暂停时,服务还在续心跳发自我的 iPhone在 2023年11月4日,14:42,zrlw ***@***.***> 写道:
主要是在delete方法增加destNamingService判空吧,其他都是添加的注解?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you modified the open/close state.Message ID: ***@***.***>
xiaoquanidea
changed the title
nacos1.3.2<--->nacos2.2.3双向同步时,暂停其中的一个task,重启jvm会抛出空指针异常;暂停task服务不会停止心跳续活;
nacos1.3.2<--->nacos2.2.3双向同步时,暂停其中的一个task,重启jvm会抛出空指针异常;暂停task服务不会停止心跳续活;注册的服务实例如果没有配置元数据会导致同步NPE
Nov 6, 2023
环境:有A(nacos1.3.2)和B(nacos2.2.3)两个集群,为A集群创建namespace名为aNamesparce,为B集群创建namespace为bNamespace,在nacos-sync中创建两个task,分别是A->B和B->A双向同步,serviceName均设置为ALL用以同步所有。
问题1:如果将B->A的同步任务暂停(暂停A->B的也可以),然后重启jvm,QuerySyncTaskTimer类会扫描到DELETE的task,发送DeleteTaskEvent,在listener中监听并调用NacosSyncToNacosServiceImpl#delete方法,方法中会调用popNamingService方法获取namingService(从serviceClient Map中获取),因为这个serviceClient Map的存储在该版本中只有在sync的listener中才会put,这个DELTE task就永远获取不到namingService,会直接抛出NPE。
问题2:如果暂停成功,则老的实例不会被注销掉。如下图所示:
这个serviceClient去重有4个namingService,任务10有两个分别是各个服务引用的NacosNamingService@2b056461和ALL引用的NacosNamingService@7c95663,任务11也有两个,分别是各个服务引用的NacosNamingService@75beac01和ALL引用的NacosNamingService@4dea1449,如果任务名为ALL的话,会获取到单独的ALL namingService,服务注册不是通过ALL注册的,所以注销会失败,服务不会下线,修复完成之后一切正常。
问题3:如果注册的服务没有元数据,ServiceInfo接口返回的json中,Instance的metadata属性被指定为null,导致NPE;
The text was updated successfully, but these errors were encountered: