[ https://issues.apache.org/jira/browse/SCB-214?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Willem Jiang updated SCB-214: ----------------------------- Fix Version/s: (was: java-chassis-1.0.0-m2) java-chassis-1.0.0-m1 > AbstractServiceRegistry findServiceInstance do not process null return value > ---------------------------------------------------------------------------- > > Key: SCB-214 > URL: https://issues.apache.org/jira/browse/SCB-214 > Project: Apache ServiceComb > Issue Type: Bug > Components: Java-Chassis > Reporter: WeiChao > Assignee: WeiChao > Priority: Major > Fix For: java-chassis-1.0.0-m1 > > > 问题1: > [2018-01-09 20:31:16,387/GMT+08:00][main][INFO]instance registry succeeds for > the first time, will send AFTER_REGISTRY event. > io.servicecomb.core.CseApplicationListener$1.afterRegistryInstance(CseApplicationListener.java:173) > java.lang.NullPointerException > at > io.servicecomb.serviceregistry.registry.AbstractServiceRegistry.findServiceInstance(AbstractServiceRegistry.java:207) > at > io.servicecomb.serviceregistry.RegistryUtils.findServiceInstance(RegistryUtils.java:208) > at > com.huawei.paas.monitor.MonitorBootListener.onBootEvent(MonitorBootListener.java:26) > at > io.servicecomb.core.CseApplicationListener.triggerEvent(CseApplicationListener.java:100) > at > io.servicecomb.core.CseApplicationListener$1.afterRegistryInstance(CseApplicationListener.java:175) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > com.google.common.eventbus.EventSubscriber.handleEvent(EventSubscriber.java:74) > at > com.google.common.eventbus.SynchronizedEventSubscriber.handleEvent(SynchronizedEventSubscriber.java:47) > at com.google.common.eventbus.EventBus.dispatch(EventBus.java:322) > at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:304) > at com.google.common.eventbus.EventBus.post(EventBus.java:275) > at io.servicecomb.serviceregistry.task.AbstractTask.run(AbstractTask.java:54) > at > io.servicecomb.serviceregistry.task.CompositeTask.run(CompositeTask.java:35) > at > io.servicecomb.serviceregistry.task.ServiceCenterTask.init(ServiceCenterTask.java:83) > at > io.servicecomb.serviceregistry.registry.AbstractServiceRegistry.run(AbstractServiceRegistry.java:168) > at > io.servicecomb.serviceregistry.registry.RemoteServiceRegistry.run(RemoteServiceRegistry.java:79) > at io.servicecomb.serviceregistry.RegistryUtils.run(RegistryUtils.java:68) > at > io.servicecomb.core.CseApplicationListener.onApplicationEvent(CseApplicationListener.java:136) > at > org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:166) > at > org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:138) > at > org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:383) > at > org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:337) > at > org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:882) > at > org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:545) > at > org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) > at > org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93) > at io.servicecomb.foundation.common.utils.BeanUtils.init(BeanUtils.java:37) > at io.servicecomb.foundation.common.utils.BeanUtils.init(BeanUtils.java:33) > at > com.huawei.paas.cse.demo.springmvc.server.SpringmvcServer.main(SpringmvcServer.java:39) > [2018-01-09 > 20:31:16,399/GMT+08:00][registry-vert.x-eventloop-thread-0][WARN]{"errorCode":"400012","errorMessage":"Micro-service > does not exist","detail":"No provider matched."} > io.servicecomb.serviceregistry.client.http.ServiceRegistryClientImpl.lambda$null$4(ServiceRegistryClientImpl.java:178) > com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: > Unrecognized field "errorCode" (class > io.servicecomb.serviceregistry.api.response.FindInstancesResponse), not > marked as ignorable (one known property: "instances"]) > at [Source: [B@3cb976a1; line: 1, column: 15] (through reference chain: > io.servicecomb.serviceregistry.api.response.FindInstancesResponse["errorCode"]) > at > com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:62) > at > com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:834) > at > com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1093) > at > com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1489) > at > com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1467) > at > com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:282) > at > com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:140) > at > com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3814) > at > com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2945) > at > io.servicecomb.foundation.common.utils.JsonUtils.readValue(JsonUtils.java:53) > at > io.servicecomb.serviceregistry.client.http.ServiceRegistryClientImpl.lambda$null$4(ServiceRegistryClientImpl.java:175) > at > io.vertx.core.http.impl.HttpClientResponseImpl$BodyHandler.notifyHandler(HttpClientResponseImpl.java:307) > at > io.vertx.core.http.impl.HttpClientResponseImpl.lambda$bodyHandler$0(HttpClientResponseImpl.java:197) > at > io.vertx.core.http.impl.HttpClientResponseImpl.handleEnd(HttpClientResponseImpl.java:261) > at > io.vertx.core.http.impl.ClientConnection.handleResponseEnd(ClientConnection.java:358) > at io.vertx.core.http.impl.ClientHandler.handleMessage(ClientHandler.java:100) > at io.vertx.core.http.impl.ClientHandler.handleMessage(ClientHandler.java:36) > at > io.vertx.core.net.impl.VertxHandler.lambda$channelRead$1(VertxHandler.java:150) > at io.vertx.core.impl.ContextImpl.lambda$wrapTask$2(ContextImpl.java:342) > at io.vertx.core.impl.ContextImpl.executeFromIO(ContextImpl.java:200) > at io.vertx.core.net.impl.VertxHandler.channelRead(VertxHandler.java:148) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358) > at > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350) > at > io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:266) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358) > at > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350) > at > io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:435) > at > io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293) > at > io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267) > at > io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:250) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358) > at > io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:350) > at > io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1334) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:372) > at > io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:358) > at > io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:926) > at > io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:129) > at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:610) > at > io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:551) > at > io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:465) > at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:437) > at > io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:873) > at java.lang.Thread.run(Thread.java:745) > 问题2:解析json失败,打印太多异常,代码需要优化 > if (response.statusCode() == 304) { > mInstances.setNeedRefresh(false); > } else { > mInstances.setInstancesResponse(JsonUtils.readValue(bodyBuffer.getBytes(), > FindInstancesResponse.class)); > } > 需要考虑400, 304, 200等错误码。 只有200的时候,才需要解析json内容。 > > [2018-01-09 > 20:31:16,399/GMT+08:00][registry-vert.x-eventloop-thread-0][WARN]{"errorCode":"400012","errorMessage":"Micro-service > does not exist","detail":"No provider matched."} > io.servicecomb.serviceregistry.client.http.ServiceRegistryClientImpl.lambda$null$4(ServiceRegistryClientImpl.java:178) > com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: > Unrecognized field "errorCode" (class > io.servicecomb.serviceregistry.api.response.FindInstancesResponse), not > marked as ignorable (one known property: "instances"]) > at [Source: [B@3cb976a1; line: 1, column: 15] (through reference chain: > io.servicecomb.serviceregistry.api.response.FindInstancesResponse["errorCode"]) > at > com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:62) -- This message was sent by Atlassian JIRA (v7.6.3#76005)