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]