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


   ### 异常堆栈如下
   ```
   [2021-11-19 
01:10:38,139]-[00e0be6c7e2e836d]-[1002]-[group0-1-thread-23]-[org.apache.servicecomb.registry.consumer.MicroserviceVersions.safeSetInstances(MicroserviceVersions.java:201)]-[ERROR]
 Failed to setInstances, appId=adc, microserviceName=adc:adc-log.
   java.lang.NullPointerException: 
        at 
org.apache.servicecomb.registry.consumer.MicroserviceVersions.lambda$mergeInstances$3(MicroserviceVersions.java:252)
 ~[foundation-registry-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1384) 
~[?:1.8.0_302]
        at 
java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:647) 
~[?:1.8.0_302]
        at 
org.apache.servicecomb.registry.consumer.MicroserviceVersions.mergeInstances(MicroserviceVersions.java:251)
 ~[foundation-registry-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.apache.servicecomb.registry.consumer.MicroserviceVersions.setInstances(MicroserviceVersions.java:225)
 ~[foundation-registry-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.apache.servicecomb.registry.consumer.MicroserviceVersions.safeSetInstances(MicroserviceVersions.java:198)
 ~[foundation-registry-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.apache.servicecomb.registry.consumer.MicroserviceVersions.pullInstances(MicroserviceVersions.java:178)
 ~[foundation-registry-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.apache.servicecomb.registry.consumer.MicroserviceManager.getOrCreateMicroserviceVersions(MicroserviceManager.java:64)
 ~[foundation-registry-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.apache.servicecomb.registry.consumer.AppManager.getOrCreateMicroserviceVersions(AppManager.java:66)
 ~[foundation-registry-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.apache.servicecomb.registry.DiscoveryManager.getOrCreateMicroserviceVersions(DiscoveryManager.java:133)
 ~[foundation-registry-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.apache.servicecomb.core.SCBEngine.createMicroserviceReferenceConfig(SCBEngine.java:540)
 ~[java-chassis-core-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.apache.servicecomb.core.SCBEngine.createMicroserviceReferenceConfig(SCBEngine.java:511)
 ~[java-chassis-core-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.apache.servicecomb.provider.springmvc.reference.CseClientHttpRequest.createRequestMeta(CseClientHttpRequest.java:184)
 ~[provider-springmvc-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.apache.servicecomb.provider.springmvc.reference.CseClientHttpRequest.execute(CseClientHttpRequest.java:169)
 ~[provider-springmvc-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:776) 
~[spring-web-5.3.12.jar:5.3.12]
        at 
org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:660) 
~[spring-web-5.3.12.jar:5.3.12]
        at 
org.apache.servicecomb.provider.springmvc.reference.RestTemplateWrapper.exchange(RestTemplateWrapper.java:202)
 ~[provider-springmvc-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
com.huawei.mateinfo.sdk.log.operation.service.impl.ShardOperationLogRecorder.record(ShardOperationLogRecorder.java:44)
 ~[mateinfo-sdk-ext-log-2.2.RC1.B012.v7.jar:?]
        at 
com.huawei.mateinfo.sdk.log.operation.service.impl.OperationLoggerImpl.log(OperationLoggerImpl.java:75)
 ~[mateinfo-sdk-ext-log-2.2.RC1.B012.v7.jar:?]
        at sun.reflect.GeneratedMethodAccessor1034.invoke(Unknown Source) ~[?:?]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:1.8.0_302]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_302]
        at 
com.huawei.mateinfo.sdk.log.operation.handler.OperationLogInvocationHandler.invoke(OperationLogInvocationHandler.java:40)
 ~[mateinfo-sdk-ext-log-2.2.RC1.B012.v7.jar:?]
        at com.sun.proxy.$Proxy423.log(Unknown Source) ~[?:?]
        at 
com.huawei.mateinfo.sdk.log.operation.aspect.OperationLogAspect.logByOperationSource(OperationLogAspect.java:170)
 ~[mateinfo-sdk-ext-log-2.2.RC1.B012.v7.jar:?]
        at 
com.huawei.mateinfo.sdk.log.operation.aspect.OperationLogAspect.doAfterReturning(OperationLogAspect.java:58)
 ~[mateinfo-sdk-ext-log-2.2.RC1.B012.v7.jar:?]
        at sun.reflect.GeneratedMethodAccessor1330.invoke(Unknown Source) ~[?:?]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:1.8.0_302]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_302]
        at 
org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:634)
 ~[spring-aop-5.3.12.jar:5.3.12]
        at 
org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:617)
 ~[spring-aop-5.3.12.jar:5.3.12]
        at 
org.springframework.aop.aspectj.AspectJAfterReturningAdvice.afterReturning(AspectJAfterReturningAdvice.java:66)
 ~[spring-aop-5.3.12.jar:5.3.12]
        at 
org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:58)
 ~[spring-aop-5.3.12.jar:5.3.12]
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175)
 ~[spring-aop-5.3.12.jar:5.3.12]
        at 
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)
 ~[spring-aop-5.3.12.jar:5.3.12]
        at 
org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
 ~[spring-aop-5.3.12.jar:5.3.12]
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
 ~[spring-aop-5.3.12.jar:5.3.12]
        at 
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:753)
 ~[spring-aop-5.3.12.jar:5.3.12]
        at 
org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:698)
 ~[spring-aop-5.3.12.jar:5.3.12]
        at 
com.huawei.mateinfo.bpmservice.definition.process.api.inner.ProcessInstallRpcServiceImpl$$EnhancerBySpringCGLIB$$8d5be1d2.prepare(<generated>)
 ~[mateinfo-bpmservice-definition-2.2.112.1.jar:?]
        at sun.reflect.GeneratedMethodAccessor1349.invoke(Unknown Source) ~[?:?]
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:1.8.0_302]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_302]
        at 
org.apache.servicecomb.core.handler.impl.ProducerOperationHandler.doInvoke(ProducerOperationHandler.java:128)
 ~[java-chassis-core-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.apache.servicecomb.core.handler.impl.ProducerOperationHandler.syncInvoke(ProducerOperationHandler.java:113)
 ~[java-chassis-core-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.apache.servicecomb.core.handler.impl.ProducerOperationHandler.invoke(ProducerOperationHandler.java:61)
 ~[java-chassis-core-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.apache.servicecomb.core.handler.impl.ProducerOperationHandler.handle(ProducerOperationHandler.java:52)
 ~[java-chassis-core-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at org.apache.servicecomb.core.Invocation.next(Invocation.java:307) 
~[java-chassis-core-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.apache.servicecomb.tracing.zipkin.ZipkinTracingHandler.handle(ZipkinTracingHandler.java:52)
 ~[handler-tracing-zipkin-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.apache.servicecomb.tracing.zipkin.ZipkinProviderTracingHandler.handle(ZipkinProviderTracingHandler.java:24)
 ~[handler-tracing-zipkin-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at org.apache.servicecomb.core.Invocation.next(Invocation.java:307) 
~[java-chassis-core-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
com.huawei.mateinfo.sdk.service.handler.ProviderMetricsHandler.handle(ProviderMetricsHandler.java:41)
 ~[mateinfo-sdk-base-service-2.2.RC1.B012.v7.jar:?]
        at org.apache.servicecomb.core.Invocation.next(Invocation.java:307) 
~[java-chassis-core-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.apache.servicecomb.common.rest.AbstractRestInvocation.doInvoke(AbstractRestInvocation.java:245)
 ~[common-rest-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.apache.servicecomb.common.rest.AbstractRestInvocation.invoke(AbstractRestInvocation.java:219)
 ~[common-rest-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.apache.servicecomb.common.rest.AbstractRestInvocation.runOnExecutor(AbstractRestInvocation.java:203)
 ~[common-rest-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
org.apache.servicecomb.common.rest.AbstractRestInvocation.lambda$scheduleInvocation$0(AbstractRestInvocation.java:162)
 ~[common-rest-2.1.5-h0.gts.dsp.r39.jar:2.1.5-h0.gts.dsp.r39]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[?:1.8.0_302]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[?:1.8.0_302]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_302]
   ```
   
   ### 经排查 org.apache.servicecomb.registry.consumer.MicroserviceVersions 
出现空指针的位置如下
   这里的ping为空 
看了下这个MicroserviceInstancePing.class只有默认实现SimpleMicroserviceInstancePing
   这个大概是什么原因导致的,因为发现重启就会ok,所以无法继续debug
   ```
   private MergedInstances mergeInstances(List<MicroserviceInstance> 
pulledInstances,
         Collection<MicroserviceInstance> inUseInstances) {
       MergedInstances mergedInstances = new MergedInstances();
       MicroserviceInstancePing ping = 
SPIServiceUtils.getPriorityHighestService(MicroserviceInstancePing.class);
       pulledInstances.stream().forEach(instance -> {
         if (ping.ping(instance)){
           mergedInstances.addInstance(instance);
         }
       });
       if (pulledInstances.isEmpty() && inUseInstances != null && 
ServiceRegistryCommonConfig
               .isEmptyInstanceProtectionEnabled()) {
         inUseInstances.stream().forEach(instance -> {
           if 
(!mergedInstances.instanceIdMap.containsKey(instance.getInstanceId())) {
             if (ping.ping(instance)) {
               mergedInstances.addInstance(instance);
             }
           }
         });
       }
   ```


-- 
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