Mohammad Asif Siddiqui created SCB-179: ------------------------------------------
Summary: When RequestParam name contains -, exception thrown when consumer invokes api using highway Key: SCB-179 URL: https://issues.apache.org/jira/browse/SCB-179 Project: Apache ServiceComb Issue Type: Bug Components: Java-Chassis Reporter: Mohammad Asif Siddiqui Fix For: java-chassis-1.0.0-m1 When RequestParam name contains -, exception thrown when consumer invokes api using highway Define api as below public boolean buyWithTransaction(@RequestHeader(name = "user-name") long userId, @RequestParam(name = "productId") long productId, @RequestParam(name = "price") double price) { Below exception thrown 2017-12-10 16:54:35,237 [WARN] bizkeeper execution error io.servicecomb.bizkeeper.BizkeeperHandler$1.onExecutionError(BizkeeperHandler.java:59) java.lang.Exception: Throwable caught while executing. at com.netflix.hystrix.AbstractCommand.getExceptionFromThrowable(AbstractCommand.java:1970) at com.netflix.hystrix.AbstractCommand.wrapWithOnExecutionErrorHook(AbstractCommand.java:1490) at com.netflix.hystrix.AbstractCommand.access$1300(AbstractCommand.java:60) at com.netflix.hystrix.AbstractCommand$ExecutionHookApplication$1.onError(AbstractCommand.java:1361) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:56) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) at rx.Observable.unsafeSubscribe(Observable.java:8666) at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:52) at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:36) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) at rx.Observable.unsafeSubscribe(Observable.java:8666) at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:52) at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:36) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) at rx.Observable.unsafeSubscribe(Observable.java:8666) at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:52) at rx.internal.operators.OnSubscribeDefer.call(OnSubscribeDefer.java:36) at rx.Observable.subscribe(Observable.java:8759) at rx.Observable.subscribe(Observable.java:8726) at rx.Observable.subscribe(Observable.java:8619) at io.servicecomb.bizkeeper.BizkeeperHandler.handle(BizkeeperHandler.java:82) at io.servicecomb.core.Invocation.next(Invocation.java:132) at io.servicecomb.loadbalance.LoadbalanceHandler.send(LoadbalanceHandler.java:157) at io.servicecomb.loadbalance.LoadbalanceHandler.handle(LoadbalanceHandler.java:106) at io.servicecomb.core.Invocation.next(Invocation.java:132) at io.servicecomb.qps.ConsumerQpsFlowControlHandler.handle(ConsumerQpsFlowControlHandler.java:51) at io.servicecomb.core.Invocation.next(Invocation.java:132) at com.huawei.paas.cse.handler.stats.PerfStatsHandler.handle(PerfStatsHandler.java:60) at io.servicecomb.core.Invocation.next(Invocation.java:132) at io.servicecomb.core.handler.ShutdownHookHandler.handle(ShutdownHookHandler.java:68) at io.servicecomb.core.Invocation.next(Invocation.java:132) at io.servicecomb.edge.core.EdgeInvocation.doInvoke(EdgeInvocation.java:153) at io.servicecomb.edge.core.EdgeInvocation.invoke(EdgeInvocation.java:80) at com.huawei.cse.wkapp.edge.ApiDispatcher.onRequest(ApiDispatcher.java:69) at io.vertx.ext.web.impl.RouteImpl.handleContext(RouteImpl.java:215) at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:78) at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:94) at io.servicecomb.transport.rest.vertx.RestBodyHandler$BHandler.doEnd(RestBodyHandler.java:232) at io.servicecomb.transport.rest.vertx.RestBodyHandler$BHandler.end(RestBodyHandler.java:210) at io.servicecomb.transport.rest.vertx.RestBodyHandler.lambda$handle$0(RestBodyHandler.java:77) at io.vertx.core.http.impl.HttpServerRequestImpl.handleEnd(HttpServerRequestImpl.java:406) at io.vertx.core.http.impl.ServerConnection.handleEnd(ServerConnection.java:298) at io.vertx.core.http.impl.ServerConnection.processMessage(ServerConnection.java:424) at io.vertx.core.http.impl.ServerConnection.handleMessage(ServerConnection.java:139) at io.vertx.core.http.impl.HttpServerImpl$ServerHandler.doMessageReceived(HttpServerImpl.java:615) at io.vertx.core.http.impl.HttpServerImpl$ServerHandler.doMessageReceived(HttpServerImpl.java:522) at io.vertx.core.http.impl.VertxHttpHandler.lambda$channelRead$0(VertxHttpHandler.java:71) at io.vertx.core.impl.ContextImpl.lambda$wrapTask$2(ContextImpl.java:314) at io.vertx.core.impl.ContextImpl.executeFromIO(ContextImpl.java:190) at io.vertx.core.http.impl.VertxHttpHandler.channelRead(VertxHttpHandler.java:71) at io.vertx.core.net.impl.VertxHandler.channelRead(VertxHandler.java:122) 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.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267) 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.vertx.core.http.impl.HttpServerImpl$Http1xOrHttp2Handler.http1(HttpServerImpl.java:1019) at io.vertx.core.http.impl.HttpServerImpl$Http1xOrHttp2Handler.channelRead(HttpServerImpl.java:990) 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) Caused by: java.lang.Error: Failed to create gen.cse.gen.wkapp.customer_service.customer.CustomerServiceImplIntf.buyWithTransaction.Args at io.servicecomb.common.javassist.JavassistUtils.createClass(JavassistUtils.java:184) at io.servicecomb.common.javassist.JavassistUtils.createClass(JavassistUtils.java:136) at io.servicecomb.codec.protobuf.utils.ProtobufSchemaUtils.createWrapSchema(ProtobufSchemaUtils.java:95) at io.servicecomb.codec.protobuf.utils.ProtobufSchemaUtils.lambda$getOrCreateArgsSchema$1(ProtobufSchemaUtils.java:156) at io.servicecomb.codec.protobuf.utils.ProtobufSchemaUtils.getOrCreateSchema(ProtobufSchemaUtils.java:66) at io.servicecomb.codec.protobuf.utils.ProtobufSchemaUtils.getOrCreateArgsSchema(ProtobufSchemaUtils.java:133) at io.servicecomb.codec.protobuf.definition.OperationProtobuf.<init>(OperationProtobuf.java:39) at io.servicecomb.codec.protobuf.definition.ProtobufManager.getOrCreateOperation(ProtobufManager.java:53) at io.servicecomb.transport.highway.HighwayClient.send(HighwayClient.java:86) at io.servicecomb.transport.highway.HighwayTransport.send(HighwayTransport.java:68) at io.servicecomb.core.handler.impl.TransportClientHandler.handle(TransportClientHandler.java:41) at io.servicecomb.core.Invocation.next(Invocation.java:132) at com.huawei.paas.cse.tcc.handler.ConsumerTccTransactionHandler.handle(ConsumerTccTransactionHandler.java:98) at io.servicecomb.core.Invocation.next(Invocation.java:132) at io.servicecomb.bizkeeper.BizkeeperCommand.lambda$construct$2(BizkeeperCommand.java:78) at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:50) ... 92 more Caused by: javassist.CannotCompileException: [source error] no such field: user at javassist.CtNewMethod.make(CtNewMethod.java:79) at javassist.CtNewMethod.make(CtNewMethod.java:45) at javassist.CtMethod.make(CtMethod.java:130) at io.servicecomb.common.javassist.JavassistUtils.createClass(JavassistUtils.java:174) ... 107 more Caused by: compile error: no such field: user at javassist.compiler.TypeChecker.fieldAccess(TypeChecker.java:819) at javassist.compiler.TypeChecker.atFieldRead(TypeChecker.java:777) at javassist.compiler.TypeChecker.atMember(TypeChecker.java:962) at javassist.compiler.JvstTypeChecker.atMember(JvstTypeChecker.java:66) at javassist.compiler.ast.Member.accept(Member.java:39) at javassist.compiler.TypeChecker.atBinExpr(TypeChecker.java:327) at javassist.compiler.ast.BinExpr.accept(BinExpr.java:41) at javassist.compiler.TypeChecker.atArrayAssign(TypeChecker.java:262) at javassist.compiler.TypeChecker.atAssignExpr(TypeChecker.java:225) at javassist.compiler.ast.AssignExpr.accept(AssignExpr.java:39) at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:242) at javassist.compiler.CodeGen.atStmnt(CodeGen.java:330) at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50) at javassist.compiler.CodeGen.atStmnt(CodeGen.java:351) at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50) at javassist.compiler.CodeGen.atMethodBody(CodeGen.java:292) at javassist.compiler.CodeGen.atMethodDecl(CodeGen.java:274) at javassist.compiler.ast.MethodDecl.accept(MethodDecl.java:44) at javassist.compiler.Javac.compileMethod(Javac.java:169) at javassist.compiler.Javac.compile(Javac.java:95) at javassist.CtNewMethod.make(CtNewMethod.java:74) ... 110 more -- This message was sent by Atlassian JIRA (v6.4.14#64029)