-
Notifications
You must be signed in to change notification settings - Fork 12.8k
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
nacos 2.0.0-bugfix版本,选主失败,此时nacos-client-2.0.0版本服务注册成功,但是控制台不显示 #5361
Comments
… use grpc protocol
这是我们文档的疏漏,导致使用方法错误。 原因是因为集群没有正确升级到2.0模式,仍然使用的是1.X模式, 所以用grpc注册的服务,在1.X模式下看不到(看不到才正常)。 这里可能需要在文档中补充一下, 对于非升级用户。可以在搭建完成之后,直接执行 |
这是必须的,因为需要考虑升级用户。所以启动时必须时以1.X模式启动。 升级会有判断,需要集群中所有节点都达到可升级至2.0的状态,才可以升级成2.0模式。 https://nacos.io/zh-cn/docs/2.0.0-upgrading.html 直接部署的,文档也有提示直接跳到关闭双写步骤。麻烦按照文档操作再尝试。 目前计划是2.0作为1.X~2.X的一个升级过度版本。 2.1版本会移除这个恶心的双写和升级判断逻辑,启动就是2.0模式。 |
之后再补充一个2.0的直接部署(非升级)文档。详细描述一下这个步骤和注意点。 |
官方吐槽哈哈哈 |
… using GRPC protocol
肯定是要移除的,这个就是为了1.X升级2.0添加的,稳定跑2.0版本之后肯定不需要了。 2.1计划需要3~4个月后发布。 需要等待2.0的功能更加稳定再进行,2.1会对包结构和冗余代码做比较大量的调整。需要先将基础功能稳定好。 |
关于PR 可以保证不会临时解决一下。 不过提示可能要改一下。 |
2.0版本升级2.1版本可以无缝替换升级吗 |
肯定可以啊,但是需要升级并运行在2.0模式之后。 |
好的,非常期待~ |
…es() when using GRPC protocol
…ractNamingRequest
…GRPC (#5411) * [ISSUE #5361] check isUseGrpcFeatures() when subscribe service using GRPC * [ISSUE #5361] add a GrpcRequestFilter to check isUseGrpcFeatures() when using GRPC protocol * [ISSUE #5361] add a judgement whether request instance of AbstractNamingRequest * [ISSUE #5361] reformat code using nacos-code-style-for-idea.xml
按照该case的描述,nacos集群应该没有启动成功,这种场景下不应该对外提供服务吧? |
@weissxu 其实这个问题最关键的地方在于,使用grpc注册服务是失败的,看不到异常,http却能够注册成功。 |
Describe the bug
注意到有几个issue 在提2.0.0版本的 nacos-client无法注册服务的问题,例如
#5299
#5339
总体表现为客户端没有异常,但是控制台上看不到注册的服务。
我自己在测试的时候也发现了这个问题。
Expected behavior
其实这个时候服务是没有注册成功的,客户端应该给出异常信息
How to Reproduce
描述一下背景吧
原因分析
由上述2、3、4三种情况的对比可知,使用grpc协议注册出了问题,http协议注册是正常的。
分析代码:
当grpc协议进行注册的时候:
可以看到只是publish 了事件就返回,所以客户端看不到异常。实际上事件的监听方在执行的时候,ClientRegisterServiceEvent 触发 ServiceChangedEvent,最后:
所以服务注册并没有成功。
修复建议
提交了一个简单的PR,将upgradeJudgement.isUseGrpcFeatures() 提前到注册之前就判断,可以临时解决一下
想知道nacos团队如何看待这个问题,有没有完善一点的解决方案
尤其是在做cp协议和ap协议分离的时候,因为这个问题我理解本质上是 jraft 选主失败导致的。
The text was updated successfully, but these errors were encountered: