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
2.3.0-BETA服务端检查批量注册接口batchRegisterInstance参数serviceName的正则规则不支持nacos服务查询应答结果里各个instance对象的serviceName #11298
Comments
正则禁止以@开头,连续的@@字符,和中文字符, 其他字符不做限制。 |
订正一下,正则表达式的确只是限制@字符,我复制表达式到测试工具时忘了把双反斜杠改成单反斜杠。 |
我记得是有处理的, 会把组名@@服务名处理成 组名 和 服务名后进行处理。 |
这个问题是我们搞nacos-sync兼容nacos2.x批量注册PR时遇到的,nacos-sync负责将相关服务实例从nacos源集群同步到目标集群。 顺便问一下nacos-sync社区是不是没人维护了?issue和pr已经有小半年没有处理了,我们想推进nacos-sync支持nacos2临时实例批量同步,以及consul、eureka、zookeeper和nacos2.x版本集群之间的同步功能,需要怎么做? |
nacos-sync支持nacos2.x临时实例批量注册方法的issue |
其实还有一个客户端redo任务服务名匹配问题,当注册临时实例请求参数未设置instance对象的instanceId、serviceName时,nacos客户端redoTask保存的实例对象里的instanceId、serviceName均为null; |
服务端收到grpc注册请求时,会先执行RemoteParamCheckFilter调用DefaultParamChecker检查入参,批量注册接口入参的instances里的serviceName也会被查,简单起见,在客户端请求时自动剔出组名前缀应该就行了。 |
所以应该就差一个betchRegister的时候有问题了对吧。 |
主要是这个问题,另外客户端解除注册实例请求时比较redotask缓存实例的判断逻辑也有问题,我分开提两个PR吧。 |
Describe the bug
2.3.0-BETA服务端检查批量注册接口batchRegisterInstance参数serviceName的正则规则在ParamCheckRule.java定义:
serviceNamePatternString正则表达式不支持@,但是我们的nacos2服务端返回的service查询实例对象里的instances实例列表的各个instance的serviceName是包含组名的:“DEFAULT_GROUP@@servicename”,服务名里面都有连续的两个“@”字符。
nacos-sync同步nacos注册中心A集群的实例到nacos注册中心B集群遇到的问题:通过service查询获取A集群的全部instance之后,要将各个instance对象里serviceName里的组名前缀删除或者将serviceName属性重置为null,才能调用B集群的批量注册接口,否则B集群对instance的serviceName参数进行检查时就会失败。
The text was updated successfully, but these errors were encountered: