一个微服务实例注册了,但是schema还没注册完, 另外一个微服务实例开始注册,然后注册结束。 这个时候服务发起了调用, 导致获取不到完整的服务schema。
经验证:当一个微服务A的schema还没注册完时,另一个微服务B去调用A的任意接口(指注册上的和没注册上的)都会报如下错误 unexpected error operation=PRODUCER rest consumer.ConsumerController.sayHello, message=cause:InvocationTargetException,message:null;cause:IllegalStateException,message:Probably invoke a service before it is registered, or no instance found for it, appId=xxxxxxx, name=xxxxx, versionRule=xxxxxx. 验证过程: 在provider微服务项目中添加两个schema分别为provider1和provder2,然后在程序中打上断点进行调试,当控制台给出其中一个schema已经注册成功之后(控制台中有相应提示,也可以去微服务引擎页面查看相应的服务契约)启动consumer微服务项目 ,然后调用provider接口
非bug问题,目前新版本的SDK,在查询到schema的summary为空时,会触发出册操作。因此,即使第一个微服务实例注册到了一半,第二个微服务实例会继续注册完毕。consumer拉取到的也是全量的schema。
mark
@HoyerIsAlexander 你也发现了这个问题吗? 我们一直没重现问题。 怀疑点都排除了。
@HoyerIsAlexander 你也发现了这个问题吗? 我们一直没重现问题。 怀疑点都排除了。
我们就是从1.3升级到2.x之后,有个服务大概有100个左右schema每次升级完,通过edge调用都会有404的问题,跟这个现象差不多,其他没有使用edge的服务不存在这个问题
@HoyerIsAlexander 你也发现了这个问题吗? 我们一直没重现问题。 怀疑点都排除了。
我们就是从1.3升级到2.x之后,有个服务大概有100个左右schema每次升级完,通过edge调用都会有404的问题,跟这个现象差不多,其他没有使用edge的服务不存在这个问题
我记得SC有100个schema数量限制,当超出100后,就注册不上。你可以进一步验证一下,是不是所有接口都调用出现404?
@HoyerIsAlexander 你也发现了这个问题吗? 我们一直没重现问题。 怀疑点都排除了。
我们就是从1.3升级到2.x之后,有个服务大概有100个左右schema每次升级完,通过edge调用都会有404的问题,跟这个现象差不多,其他没有使用edge的服务不存在这个问题
我记得SC有100个schema数量限制,当超出100后,就注册不上。你可以进一步验证一下,是不是所有接口都调用出现404?
就这个错误no instance found for it, appId=xxxxxxx, name=xxxxx,只要转到这个服务的就是404