yanghao

Results 24 issues of yanghao

https://github.com/apache/servicecomb-java-chassis/blob/703a972576b35154d9a9a46f087411fab86fd74a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/http/RestClientInvocation.java#L123

bug

微服务初次调用时,会创建相应的MicroserviceVersion对象,并推送事件CreateMicroserviceVersionEvent,在ServiceRegistryListener中监听该事件,onCreateMicroserviceVersion方法中会遍历微服务的schemaId从注册中心获取对应的swagger,而在后续获取swagger的逻辑中,可能由于网络等原因导致本次获取swagger失败,从而返回一个null,而SDK是允许schemaId对应的swagger为null的情况,这就导致本地调用时获取微服务的信息是成功的,且存储在SDK的缓存中,不过若是调用到swagger为null的schemaId中的相关operation时,会失败。并且由于该缓存对应的revisionID在注册中心是没有变动的,所以后续的缓存更新中,当前所调用的微服务,其并不会更新,也就导致了微服务的某一schemaId对应的swagger内容持续丢失

enhancement

https://github.com/apache/servicecomb-mesher/blob/6d1d2693f15871c2f1a22ecd6a5a4c691b6a26b6/proxy/protocol/http/sidecar.go#L324

mesher当前社区版本最新1.7.0,后续社区是否有升级计划? 这个版本再往后会超出软件使用的生命周期,影响下期选型

现象: 1. 首先微服务初次启动时已经成功注册了,且契约正常; 2. 微服务提供了一个接口,可以检查自身的调用链状态,大致逻辑为自己调用自己的health接口 3. 将心跳的间隔时间调至1s(为了加大异常出现的概率),先调用一次2中的接口,此时会将自身微服务的契约缓存到schemaCache中,然后通过调用注册中心接口或者是页面上删除微服务信息; 4. 微服务重新注册之后(未重启),在页面上发现微服务的契约丢失,其它服务无法正常调用该服务 原因分析: 1. chassis中提供来了一个schemaCache由于缓存微服务契约,依据serviceId和schemaId进行存储,缓存的有效期为60s,也就说在60s内,获取契约时,会优先获取schemaCache中的契约,只有当缓存为空或者契约已过期才会重新从注册中心获取契约; 2. 而当存在微服务调用自身接口的场景时,schemaCache中也就缓存下来了微服务本身的契约信息 3. 而若是恰巧在此时,注册中心的微服务信息被删除,导致微服务重新注册时,且一般情况下生成的微服务serivceId是不变的,也就导致在进行微服务契约注册,进行summary比较时,即使从注册中心获取的summary为空,而在从注册中心获取详细契约生成summary时,优先获取的是schemaCache中的契约,也就导致实际注册中心没有相关的契约信息,但是微服务在注册时的感知却是注册中心已经存在该契约信息,从而导致微服务不再注册该契约信息。 4. 最终导致的结果即为注册中心的微服务契约信息部分丢失甚至全部丢失。

bug
2.x

当前遇到一个问题,是服务端返回的响应消息中,字符串长度过长,导致jackson解析失败 ``` Caused by: com.fasterxml.jackson.core.exc.StreamConstraintsException: String length (20051112) exceeds the maximum length (20000000) at com.fasterxml...core.StreamReadConstraints.validateStringLength:324 at com.fasterxml...util.ReadConstrainedTextBuffer.validateStringLength:27 at com.fasterxml...util.TextBuffer.finishCurrentSegment:939 at com.fasterxml...json.UTF8StreamJsonParser._finishString2:2584 at com.fasterxml...json.UTF8StreamJsonParser._finishAndReturnString:2560 at com.fasterxml...json.UTF8StreamJsonParser.getText:335 at com.fasterxml...jsonorg.JSONObjectDeserializer.deserialize:51 at com.fasterxml...jsonorg.JSONObjectDeserializer.deserialize:48 at...

enhancement

3.0.0将注册修改为同步注册了,也就是说启动过程中如果注册不成功, 那么启动会失败。 启动成功后处理AFTER_REGISTRY事件,如果处理失败, 启动会失败。 由于CSE是支持与spring并存的,微服务接口可供直接ip:port调用的: 当前在2.x版本,微服务注册为异步注册,微服务注册失败不会影响服务启动,这种情况下,对于提供rest接口的服务,其是可以正常提供服务。 若是改为同步注册,则意味着微服务注册失败的话,其非cse接口也无法提供服务了

2.6.0版本,微服务在启动的时候,偶现微服务启动失败,错误日志中显示是由空指针引起的 错误日志如下 ``` [2023-11-02 18:38:10.376+08:00] [INFO] [AuditLogReportTask]-[] [] | o.a.s.f.common.utils.SPIServiceUtils Found SPI service org.apache.servicecomb.core.ConsumerProvider, count=0. [2023-11-02 18:38:10.375+08:00] [INFO] [main]-[] [] | c.h.g.notice.config.LogLevelMonitor change loglevel to [DEBUG] end [2023-11-02 18:38:10.378+08:00] [INFO]...

15:15:01 ERROR [group0-1-thread-1] o.a.s.common.rest.codec.RestCodec 73 -> Parameter is not valid for operation [bids_service.bidsImportRestService.importRestBIDS]. Parameter is [packageFile]. Processor is [formData]. java.lang.IllegalStateException: getReader() has already been called for this request at org.apache.catalina.connector.Request.getInputStream(Request.java:1053)...