jessefjxm opened a new issue #2653:
URL: https://github.com/apache/servicecomb-java-chassis/issues/2653


   **背景**
   我们的微服务基于女娲框架开发,在启动时CSE加载完成后会调用一些微服务间CSE接口,用以初始化缓存
   
![image](https://user-images.githubusercontent.com/1498592/144572613-0c8c3ad1-cbe1-430d-8bf8-e8a39ce23d4e.png)
   最近我们注意到,在开发环境和测试环境,启动时有大约5%的概率出现servicecomb相关的数组越界异常,导致部分内部接口调用失败。
   
完整错误栈位于底部,似乎是CSE在初始化被调用接口时失败了,但是看不出来具体是什么原因。由于这一问题是概率出现的,且最近一个月内仅有3~5天遇到,当天会有大概50%的概率在启动时遇到此错误,所以感觉跟配置项无关。
   
   **产品**
   Nuwa 3.0.8.103
   (Nuwa-CSE插件)ServiceComb Java-Chassis 1.3.6
   
   **错误栈**
   ```
   2021-12-02 10:13:58.763 [main] ERROR - 
[MicroserviceVersions.java:safeSetInstances:182] - [] - Failed to setInstances, 
appId=MapOpenService, microserviceName=MapOpenService:MapOpenKitAccessService.
   java.lang.IndexOutOfBoundsException: Index: 5, Size: 5
           at java.util.ArrayList.rangeCheck(ArrayList.java:659) ~[?:1.8.0_272]
           at java.util.ArrayList.get(ArrayList.java:435) ~[?:1.8.0_272]
           at 
org.apache.servicecomb.common.rest.definition.RestOperationMeta.init(RestOperationMeta.java:105)
 ~[common-rest-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.common.rest.locator.ServicePathManager.addSchema(ServicePathManager.java:86)
 ~[common-rest-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.common.rest.RestEngineSchemaListener.onSchemaLoaded(RestEngineSchemaListener.java:54)
 ~[common-rest-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.core.definition.loader.SchemaListenerManager.notifySchemaListener(SchemaListenerManager.java:59)
 ~[java-chassis-core-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.core.definition.loader.SchemaListenerManager.notifySchemaListener(SchemaListenerManager.java:48)
 ~[java-chassis-core-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.core.definition.MicroserviceVersionMeta.<init>(MicroserviceVersionMeta.java:46)
 ~[java-chassis-core-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.core.definition.MicroserviceVersionMetaFactory.create(MicroserviceVersionMetaFactory.java:38)
 ~[java-chassis-core-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersions.lambda$setInstances$1(MicroserviceVersions.java:200)
 ~[service-registry-1.3.6.jar!/:1.3.6]
           at 
java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
 ~[?:1.8.0_272]
           at 
org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx.computeIfAbsent(ConcurrentHashMapEx.java:56)
 ~[foundation-common-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersions.setInstances(MicroserviceVersions.java:199)
 ~[service-registry-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersions.safeSetInstances(MicroserviceVersions.java:178)
 ~[service-registry-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersions.pullInstances(MicroserviceVersions.java:164)
 ~[service-registry-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.serviceregistry.consumer.MicroserviceVersions.submitPull(MicroserviceVersions.java:136)
 ~[service-registry-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.serviceregistry.consumer.MicroserviceManager.lambda$getOrCreateMicroserviceVersions$0(MicroserviceManager.java:55)
 ~[service-registry-1.3.6.jar!/:1.3.6]
           at 
java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
 ~[?:1.8.0_272]
           at 
org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx.computeIfAbsent(ConcurrentHashMapEx.java:56)
 ~[foundation-common-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.serviceregistry.consumer.MicroserviceManager.getOrCreateMicroserviceVersions(MicroserviceManager.java:53)
 ~[service-registry-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.serviceregistry.consumer.MicroserviceManager.getOrCreateMicroserviceVersionRule(MicroserviceManager.java:80)
 ~[service-registry-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.serviceregistry.consumer.AppManager.getOrCreateMicroserviceVersionRule(AppManager.java:67)
 ~[service-registry-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.core.provider.consumer.ReferenceConfig.<init>(ReferenceConfig.java:40)
 ~[java-chassis-core-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.core.provider.consumer.ConsumerProviderManager.createReferenceConfig(ConsumerProviderManager.java:56)
 ~[java-chassis-core-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.core.provider.consumer.ConsumerProviderManager.createReferenceConfig(ConsumerProviderManager.java:87)
 ~[java-chassis-core-1.3.6.jar!/:1.3.6]
           at 
java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
 ~[?:1.8.0_272]
           at 
org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx.computeIfAbsent(ConcurrentHashMapEx.java:56)
 ~[foundation-common-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.core.provider.consumer.ConsumerProviderManager.getReferenceConfig(ConsumerProviderManager.java:91)
 ~[java-chassis-core-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.core.SCBEngine.getReferenceConfigForInvoke(SCBEngine.java:398)
 ~[java-chassis-core-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.provider.pojo.Invoker.findReferenceConfig(Invoker.java:122)
 ~[provider-pojo-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.provider.pojo.Invoker.createInvokerMeta(Invoker.java:91) 
~[provider-pojo-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.provider.pojo.Invoker.invoke(Invoker.java:132) 
~[provider-pojo-1.3.6.jar!/:1.3.6]
           at com.sun.proxy.$Proxy138.queryList(Unknown Source) ~[?:?]
           at 
com.huawei.map.open.sdk.client.projectbypass.ProjectBypassClient.lambda$getProjectBypassList$0(ProjectBypassClient.java:50)
 ~[map-open-service-sdk-6.3.0.1-20211201.070340-29.jar!/:?]
           at com.huawei.map.foundation.utils.olc.OLCUtil.run(OLCUtil.java:78) 
~[map-foundation-6.3.0.1-20211201.064413-11.jar!/:?]
           at 
com.huawei.map.foundation.utils.olc.OLCCaller$OLCCallerBuilder.call(OLCCaller.java:92)
 ~[map-foundation-6.3.0.1-20211201.064413-11.jar!/:?]
           at 
com.huawei.map.open.sdk.utils.OpenOLCUtil.lambda$call$1(OpenOLCUtil.java:268) 
~[map-open-service-sdk-6.3.0.1-20211201.070340-29.jar!/:?]
           at 
com.huawei.map.foundation.utils.UncheckCaller.innerCall(UncheckCaller.java:88) 
~[map-foundation-6.3.0.1-20211201.064413-11.jar!/:?]
           at 
com.huawei.map.foundation.utils.UncheckCaller.callQuietly(UncheckCaller.java:74)
 ~[map-foundation-6.3.0.1-20211201.064413-11.jar!/:?]
           at 
com.huawei.map.open.sdk.utils.OpenOLCUtil.call(OpenOLCUtil.java:268) 
~[map-open-service-sdk-6.3.0.1-20211201.070340-29.jar!/:?]
           at 
com.huawei.map.open.sdk.client.projectbypass.ProjectBypassClient.getProjectBypassList(ProjectBypassClient.java:49)
 ~[map-open-service-sdk-6.3.0.1-20211201.070340-29.jar!/:?]
           at 
com.huawei.map.open.sdk.cache.ProjectBypassCache.loadData(ProjectBypassCache.java:60)
 ~[map-open-service-sdk-6.3.0.1-20211201.070340-29.jar!/:?]
           at 
com.huawei.map.foundation.cache.PeriodicReloadCache.innerAddReloadJob(PeriodicReloadCache.java:168)
 ~[map-foundation-6.3.0.1-20211201.064413-11.jar!/:?]
           at 
com.huawei.map.foundation.cache.PeriodicReloadCache.addReloadJob(PeriodicReloadCache.java:126)
 ~[map-foundation-6.3.0.1-20211201.064413-11.jar!/:?]
           at 
com.huawei.map.foundation.service.SCBEngineBootListener.onBootEvent(SCBEngineBootListener.java:72)
 ~[map-foundation-6.3.0.1-20211201.064413-11.jar!/:?]
           at 
org.apache.servicecomb.core.SCBEngine.triggerEvent(SCBEngine.java:163) 
~[java-chassis-core-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.core.SCBEngine$1.afterRegistryInstance(SCBEngine.java:202)
 ~[java-chassis-core-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.foundation.common.event.SimpleSubscriber.syncDispatch(SimpleSubscriber.java:96)
 ~[foundation-common-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.foundation.common.event.SimpleSubscriber.dispatchEvent(SimpleSubscriber.java:88)
 ~[foundation-common-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.foundation.common.event.SimpleEventBus.post(SimpleEventBus.java:73)
 ~[foundation-common-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.serviceregistry.task.AbstractTask.run(AbstractTask.java:54)
 ~[service-registry-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.serviceregistry.task.CompositeTask.run(CompositeTask.java:35)
 ~[service-registry-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.serviceregistry.task.ServiceCenterTask.init(ServiceCenterTask.java:108)
 ~[service-registry-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.serviceregistry.registry.AbstractServiceRegistry.run(AbstractServiceRegistry.java:178)
 ~[service-registry-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.serviceregistry.registry.RemoteServiceRegistry.run(RemoteServiceRegistry.java:84)
 ~[?:1.3.6]
           at 
org.apache.servicecomb.serviceregistry.RegistryUtils.run(RegistryUtils.java:70) 
~[service-registry-1.3.6.jar!/:1.3.6]
           at org.apache.servicecomb.core.SCBEngine.doInit(SCBEngine.java:287) 
~[java-chassis-core-1.3.6.jar!/:1.3.6]
           at org.apache.servicecomb.core.SCBEngine.init(SCBEngine.java:225) 
~[java-chassis-core-1.3.6.jar!/:1.3.6]
           at 
org.apache.servicecomb.core.CseApplicationListener.onApplicationEvent(CseApplicationListener.java:81)
 ~[java-chassis-core-1.3.6.jar!/:1.3.6]
           at 
org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
 ~[spring-context-5.2.18.RELEASE.jar!/:5.2.18.RELEASE]
           at 
org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
 ~[spring-context-5.2.18.RELEASE.jar!/:5.2.18.RELEASE]
           at 
org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
 ~[spring-context-5.2.18.RELEASE.jar!/:5.2.18.RELEASE]
           at 
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:404)
 ~[spring-context-5.2.18.RELEASE.jar!/:5.2.18.RELEASE]
           at 
org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:361)
 ~[spring-context-5.2.18.RELEASE.jar!/:5.2.18.RELEASE]
           at 
org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:898)
 ~[spring-context-5.2.18.RELEASE.jar!/:5.2.18.RELEASE]
           at 
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:554)
 ~[spring-context-5.2.18.RELEASE.jar!/:5.2.18.RELEASE]
           at com.huawei.nuwa.SpringInitializer.init(SpringInitializer.java:40) 
~[nuwa-core-3.0.8.103.jar!/:3.0.8.103]
           at com.huawei.nuwa.NuwaBootstrap.start(NuwaBootstrap.java:50) 
~[nuwa-core-3.0.8.103.jar!/:3.0.8.103]
           at 
com.huawei.nuwa.container.model.PluginModel.lambda$null$1(PluginModel.java:684) 
~[nuwa-boot-container-3.0.8.103.jar!/:?]
           at java.util.Optional.ifPresent(Optional.java:159) ~[?:1.8.0_272]
           at 
com.huawei.nuwa.container.model.PluginModel.lambda$start$2(PluginModel.java:684)
 ~[nuwa-boot-container-3.0.8.103.jar!/:?]
           at 
com.huawei.nuwa.boot.loader.util.ClassLoaderUtils.runWithClassLoader(ClassLoaderUtils.java:57)
 [nuwa-boot-loader-3.0.8.103.jar!/:?]
           at 
com.huawei.nuwa.container.model.PluginModel.start(PluginModel.java:683) 
[nuwa-boot-container-3.0.8.103.jar!/:?]
           at 
com.huawei.nuwa.container.service.plugin.PluginDeployServiceImpl.deploy(PluginDeployServiceImpl.java:31)
 [nuwa-boot-container-3.0.8.103.jar!/:?]
           at 
com.huawei.nuwa.container.pipeline.DeployPluginStage.process(DeployPluginStage.java:33)
 [nuwa-boot-container-3.0.8.103.jar!/:?]
           at 
com.huawei.nuwa.container.pipeline.StandardPipeline.process(StandardPipeline.java:58)
 [nuwa-boot-container-3.0.8.103.jar!/:?]
           at 
com.huawei.nuwa.container.NuwaContainer.start(NuwaContainer.java:99) 
[nuwa-boot-container-3.0.8.103.jar!/:?]
           at 
com.huawei.nuwa.container.NuwaContainer.main(NuwaContainer.java:65) 
[nuwa-boot-container-3.0.8.103.jar!/:?]
           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[?:1.8.0_272]
           at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
~[?:1.8.0_272]
           at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:1.8.0_272]
           at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_272]
           at 
com.huawei.nuwa.boot.loader.MainMethodRunner.run(MainMethodRunner.java:41) 
[nuwa-boot-container-full-3.0.8.103.jar:3.0.8.103]
           at 
com.huawei.nuwa.boot.loader.AbstractLauncher.launch(AbstractLauncher.java:105) 
[nuwa-boot-container-full-3.0.8.103.jar:3.0.8.103]
           at 
com.huawei.nuwa.boot.loader.AbstractLauncher.launch(AbstractLauncher.java:52) 
[nuwa-boot-container-full-3.0.8.103.jar:3.0.8.103]
           at 
com.huawei.nuwa.boot.loader.NuwaRuntimeLauncher.main(NuwaRuntimeLauncher.java:28)
 [nuwa-boot-container-full-3.0.8.103.jar:3.0.8.103]
   
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to