Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

相同永久实例在不同nameSpace下面健康检测问题 #12301

Closed
chen10038 opened this issue Jul 1, 2024 · 5 comments · Fixed by #12310
Closed

相同永久实例在不同nameSpace下面健康检测问题 #12301

chen10038 opened this issue Jul 1, 2024 · 5 comments · Fixed by #12310

Comments

@chen10038
Copy link
Contributor

因为测试环境一直公用的同一套nacos 所以每次提测nameSpace会新建。
nacos 版本:2.3.1
nacos-client版本:2.2.1
springboot版本:2.7.15
配置: spring.cloud.nacos.discovery.ephemeral=false //注册永久实例
步骤:1、 创建nameSpace1 ,注册服务和实例到nameSpace1 ,查看nacos服务列表页面,服务正常注册。健康状态为true。正常。
2、杀掉服务。再次查看nameSpace1的服务列表页面,健康状态为false。正常
3、创建nameSpace2,修改服务配置(只修改了注册的nameSpace),其他配置完全一致。重启服务。
4、查看nameSpace2的服务列表 服务正常注册,实例显示健康。查看nameSpace1的服务列表,服务实例也显示健康。
5、再次杀掉服务。nameSpace1的实例健康状态显示false nameSpace2的健康状态显示true.。 nameSpace2网关依旧能转发到
被杀掉的服务上面。
nameSpace1的服务状态:
image

nameSpace1的实例状态
image

nameSpace2的服务状态
image

nameSpace2的实力状态:
image

查看nacos日志没有发现具体问题。请帮忙排查一下问题。

PS: 直接使用openApi注册服务和实例也存在该问题。 (永久实例)。

@KomachiSion
Copy link
Collaborator

两个实例是出了namespace以外,其他全一样吗?

@chen10038
Copy link
Contributor Author

是的。 只是在application文件中 修改了nameSpace配置

@chen10038
Copy link
Contributor Author

image

我用arthus 反编译并加载代码 ,加了日志看了一下。 其他的nameSpace的服务检测在这里都被拦截了 , 我怀疑就是instance没有正常结束。尝试去掉代码块中的return, 再看nacos后台 ,所有nameSpace下的服务状态都符合了预期, 但是不确定这样会引起的其他问题。 希望还是能协助帮找到一个更好的解决方案。

@chen10038
Copy link
Contributor Author

image

另外 这的TimeOutTask代码里面需不需要调用 instance.finishCheck(); ?

@chen10038
Copy link
Contributor Author

我感觉我发现了问题 Beat对象的toSring 不区分nameSpace
image

image
不同nameSpace下如果多线程同时执行 有一个key就会被取消

image

因为最开始重置了instance开始标志 丢失key以后状态一直没办法重置回去 所以后续的检测其实就一直未进行了
就形成了最上面评论的那个现象 。

我拉取源码进行了toString方法修改 进行验证 最终符合了预期效果。

请协助看一下这样修改有没有其他问题

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants