You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by GitBox <gi...@apache.org> on 2019/12/06 13:24:20 UTC

[GitHub] [servicecomb-java-chassis] willard-kali opened a new issue #1446: 请求的URL中存在冒号报错490

willard-kali opened a new issue #1446: 请求的URL中存在冒号报错490
URL: https://github.com/apache/servicecomb-java-chassis/issues/1446
 
 
   Server发布的REST接口,URL定义为:/微服务/query/{name}
   有EdgeService作为网关转发微服务的请求。浏览器发送请求:https://ip:port/rest/微服务/query/test:name。
   请求经过EdgeService,会将URL提取出来:/query/test:name,并转发给微服务。
   然后EdgeService日志中报错490,错误信息如下:
   
   > [ERROR][Invoke all server failed. Operation CONSUMER rest 微服务名.Controller包路径.接口方法, e=cause:InvocationException,message:InvocationException: code=490;msg=CommonExceptionData [message=Cse Internal Bad Request];cause:NullPointerException,message:null][org.apache.servicecomb.loadbalance.LoadbalanceHandler][onExecutionFailed,323]
   [ERROR][vertx rest transport send error.][org.apache.servicecomb.transport.rest.client.RestTransportClient][send,117]
   java.lang.NullPointerException: null
           at org.apache.servicecomb.common.rest.definition.path.PathVarParamWriter.write(PathVarParamWriter.java:34) ~[common-rest-1.2.1.jar:1.2.1]
           at org.apache.servicecomb.common.rest.definition.path.URLPathBuilder.genPathString(URLPathBuilder.java:111) ~[common-rest-1.2.1.jar:1.2.1]
           at org.apache.servicecomb.common.rest.definition.path.URLPathBuilder.createRequestPath(URLPathBuilder.java:97) ~[common-rest-1.2.1.jar:1.2.1]
           at org.apache.servicecomb.transport.rest.client.http.RestClientInvocation.createRequestPath(RestClientInvocation.java:275) ~[transport-rest-client-1.2.1.jar:1.2.1]
           at org.apache.servicecomb.transport.rest.client.http.RestClientInvocation.invoke(RestClientInvocation.java:85) ~[transport-rest-client-1.2.1.jar:1.2.1]
           at org.apache.servicecomb.transport.rest.client.RestTransportClient.send(RestTransportClient.java:114) ~[transport-rest-client-1.2.1.jar:1.2.1]
           at org.apache.servicecomb.transport.rest.vertx.VertxRestTransport.send(VertxRestTransport.java:86) ~[transport-rest-vertx-1.2.1.jar:1.2.1]
           at org.apache.servicecomb.core.handler.impl.TransportClientHandler.handle(TransportClientHandler.java:42) ~[java-chassis-core-1.2.1.jar:1.2.1]
           at org.apache.servicecomb.core.Invocation.next(Invocation.java:204) ~[java-chassis-core-1.2.1.jar:1.2.1]
           at org.apache.servicecomb.loadbalance.LoadbalanceHandler$4.lambda$call$1(LoadbalanceHandler.java:368) ~[handler-loadbalance-1.2.1.jar:1.2.1]
           at rx.Observable.unsafeSubscribe(Observable.java:10327) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:41) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.operators.OnSubscribeDoOnEach.call(OnSubscribeDoOnEach.java:30) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.Observable.unsafeSubscribe(Observable.java:10327) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.util.ScalarSynchronousObservable$3.call(ScalarSynchronousObservable.java:235) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.util.ScalarSynchronousObservable$3.call(ScalarSynchronousObservable.java:228) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.Observable.unsafeSubscribe(Observable.java:10327) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.drain(OnSubscribeConcatMap.java:286) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.onNext(OnSubscribeConcatMap.java:144) ~[rxjava-1.3.8.jar:1.3.8]
           at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:185) ~[ribbon-loadbalancer-2.2.5.jar:2.2.5]
           at com.netflix.loadbalancer.reactive.LoadBalancerCommand$1.call(LoadBalancerCommand.java:180) ~[ribbon-loadbalancer-2.2.5.jar:2.2.5]
           at rx.Observable.unsafeSubscribe(Observable.java:10327) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:42) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.Observable.unsafeSubscribe(Observable.java:10327) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber$1.call(OperatorRetryWithPredicate.java:127) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.enqueue(TrampolineScheduler.java:73) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.schedulers.TrampolineScheduler$InnerCurrentThreadScheduler.schedule(TrampolineScheduler.java:52) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber.onNext(OperatorRetryWithPredicate.java:79) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.operators.OperatorRetryWithPredicate$SourceSubscriber.onNext(OperatorRetryWithPredicate.java:45) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.util.ScalarSynchronousObservable$WeakSingleProducer.request(ScalarSynchronousObservable.java:276) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.Subscriber.setProducer(Subscriber.java:209) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.util.ScalarSynchronousObservable$JustOnSubscribe.call(ScalarSynchronousObservable.java:138) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.util.ScalarSynchronousObservable$JustOnSubscribe.call(ScalarSynchronousObservable.java:129) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.Observable.subscribe(Observable.java:10423) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.Observable.subscribe(Observable.java:10390) ~[rxjava-1.3.8.jar:1.3.8]
           at rx.Observable.subscribe(Observable.java:10271) ~[rxjava-1.3.8.jar:1.3.8]
           at org.apache.servicecomb.loadbalance.LoadbalanceHandler.sendWithRetry(LoadbalanceHandler.java:394) ~[handler-loadbalance-1.2.1.jar:1.2.1]
           at org.apache.servicecomb.loadbalance.LoadbalanceHandler.handle(LoadbalanceHandler.java:207) ~[handler-loadbalance-1.2.1.jar:1.2.1]
           at org.apache.servicecomb.core.Invocation.next(Invocation.java:204) ~[java-chassis-core-1.2.1.jar:1.2.1]
   ......
   
   根据实测分析,是因为URL路径中带有冒号,导致出现该错误。请问下当前这种使用场景,应该如何配置才能支持URL中有冒号?

----------------------------------------------------------------
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.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services