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


   `java.lang.IllegalStateException: Response has already been written
           at 
io.vertx.core.http.impl.HttpServerResponseImpl.checkValid(HttpServerResponseImpl.java:573)
 ~[vertx-core-3.6.3.jar:3.6.3]
           at 
io.vertx.core.http.impl.HttpServerResponseImpl.end(HttpServerResponseImpl.java:324)
 ~[vertx-core-3.6.3.jar:3.6.3]
           at 
org.apache.servicecomb.foundation.vertx.http.VertxServerResponseToHttpServletResponse.internalFlushBuffer(VertxServerResponseToHttpServletResponse.java:122)
 ~[foundation-vertx-1.3.0.jar:1.3.0]
           at 
org.apache.servicecomb.foundation.vertx.http.VertxServerResponseToHttpServletResponse.flushBuffer(VertxServerResponseToHttpServletResponse.java:107)
 ~[foundation-vertx-1.3.0.jar:1.3.0]
           at 
org.apache.servicecomb.common.rest.AbstractRestInvocation.onExecuteHttpServerFiltersFinish(AbstractRestInvocation.java:306)
 ~[common-rest-1.3.0.jar:1.3.0]
           at 
org.apache.servicecomb.common.rest.AbstractRestInvocation.lambda$executeHttpServerFilters$3(AbstractRestInvocation.java:295)
 ~[common-rest-1.3.0.jar:1.3.0]
           at 
java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:760)
 ~[?:1.8.0_211]
           at 
java.util.concurrent.CompletableFuture.uniWhenCompleteStage(CompletableFuture.java:778)
 ~[?:1.8.0_211]
           at 
java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:2140)
 ~[?:1.8.0_211]
           at 
org.apache.servicecomb.common.rest.AbstractRestInvocation.executeHttpServerFilters(AbstractRestInvocation.java:290)
 ~[common-rest-1.3.0.jar:1.3.0]
           at 
org.apache.servicecomb.common.rest.AbstractRestInvocation.sendResponse(AbstractRestInvocation.java:283)
 ~[common-rest-1.3.0.jar:1.3.0]
           at 
org.apache.servicecomb.common.rest.AbstractRestInvocation.sendResponseQuietly(AbstractRestInvocation.java:260)
 ~[common-rest-1.3.0.jar:1.3.0]
           at 
org.apache.servicecomb.common.rest.AbstractRestInvocation.lambda$doInvoke$2(AbstractRestInvocation.java:243)
 ~[common-rest-1.3.0.jar:1.3.0]
           at 
org.apache.servicecomb.loadbalance.LoadbalanceHandler.lambda$handle$0(LoadbalanceHandler.java:199)
 ~[handler-loadbalance-1.3.0.jar:1.3.0]
           at 
org.apache.servicecomb.swagger.invocation.AsyncResponse.complete(AsyncResponse.java:46)
 ~[swagger-invocation-core-1.3.0.jar:1.3.0]
           at 
org.apache.servicecomb.loadbalance.LoadbalanceHandler$3.onExecutionSuccess(LoadbalanceHandler.java:330)
 ~[handler-loadbalance-1.3.0.jar:1.3.0]
           at 
org.apache.servicecomb.loadbalance.LoadbalanceHandler$3.onExecutionSuccess(LoadbalanceHandler.java:296)
 ~[handler-loadbalance-1.3.0.jar:1.3.0]
           at 
com.netflix.loadbalancer.reactive.ExecutionContextListenerInvoker.onExecutionSuccess(ExecutionContextListenerInvoker.java:143)
 ~[ribbon-loadbalancer-2.3.0.jar:2.3.0]
           at 
com.netflix.loadbalancer.reactive.ExecutionContextListenerInvoker.onExecutionSuccess(ExecutionContextListenerInvoker.java:131)
 ~[ribbon-loadbalancer-2.3.0.jar:2.3.0]
           at 
com.netflix.loadbalancer.reactive.LoadBalancerCommand$3$1$1.onNext(LoadBalancerCommand.java:324)
 ~[ribbon-loadbalancer-2.3.0.jar:2.3.0]
           at 
rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onNext(OnSubscribeDoOnEach.java:96)
 ~[rxjava-1.3.8.jar:1.3.8]
           at 
org.apache.servicecomb.loadbalance.LoadbalanceHandler$4.lambda$null$0(LoadbalanceHandler.java:396)
 ~[handler-loadbalance-1.3.0.jar:1.3.0]
           at 
org.apache.servicecomb.swagger.invocation.AsyncResponse.complete(AsyncResponse.java:46)
 ~[swagger-invocation-core-1.3.0.jar:1.3.0]
           at 
rx.internal.util.ActionSubscriber.onNext(ActionSubscriber.java:39) 
~[rxjava-1.3.8.jar:1.3.8]
           at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:134) 
~[rxjava-1.3.8.jar:1.3.8]
           at rx.observers.Subscribers$5.onNext(Subscribers.java:235) 
~[rxjava-1.3.8.jar:1.3.8]
           at 
rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onNext(OnSubscribeDoOnEach.java:101)
 ~[rxjava-1.3.8.jar:1.3.8]
           at rx.observers.Subscribers$5.onNext(Subscribers.java:235) 
~[rxjava-1.3.8.jar:1.3.8]
           at 
rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onNext(OnSubscribeDoOnEach.java:101)
 ~[rxjava-1.3.8.jar:1.3.8]
           at 
rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:77)
 ~[rxjava-1.3.8.jar:1.3.8]
           at rx.observers.Subscribers$5.onNext(Subscribers.java:235) 
~[rxjava-1.3.8.jar:1.3.8]
           at rx.observers.Subscribers$5.onNext(Subscribers.java:235) 
~[rxjava-1.3.8.jar:1.3.8]
           at 
rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onNext(OnSubscribeDoOnEach.java:101)
 ~[rxjava-1.3.8.jar:1.3.8]
           at 
rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onNext(OnSubscribeDoOnEach.java:101)
 ~[rxjava-1.3.8.jar:1.3.8]
           at 
rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onNext(OnSubscribeDoOnEach.java:101)
 ~[rxjava-1.3.8.jar:1.3.8]
           at 
rx.internal.operators.OperatorOnErrorResumeNextViaFunction$4.onNext(OperatorOnErrorResumeNextViaFunction.java:154)
 ~[rxjava-1.3.8.jar:1.3.8]
           at 
rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onNext(OnSubscribeDoOnEach.java:101)
 ~[rxjava-1.3.8.jar:1.3.8]
           at 
rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onNext(OnSubscribeDoOnEach.java:101)
 ~[rxjava-1.3.8.jar:1.3.8]
           at rx.observers.Subscribers$5.onNext(Subscribers.java:235) 
~[rxjava-1.3.8.jar:1.3.8]
           at 
com.netflix.hystrix.AbstractCommand$DeprecatedOnRunHookApplication$1.onNext(AbstractCommand.java:1442)
 ~[hystrix-core-1.5.18.jar:1.5.18]
           at 
com.netflix.hystrix.AbstractCommand$ExecutionHookApplication$1.onNext(AbstractCommand.java:1368)
 ~[hystrix-core-1.5.18.jar:1.5.18]
           at 
org.apache.servicecomb.bizkeeper.BizkeeperCommand.lambda$null$1(BizkeeperCommand.java:87)
 ~[handler-bizkeeper-1.3.0.jar:1.3.0]
           at 
org.apache.servicecomb.swagger.invocation.AsyncResponse.complete(AsyncResponse.java:46)
 ~[swagger-invocation-core-1.3.0.jar:1.3.0]
           at 
org.apache.servicecomb.transport.rest.client.http.RestClientInvocation.complete(RestClientInvocation.java:250)
 ~[transport-rest-client-1.3.0.jar:1.3.0]
           at 
org.apache.servicecomb.transport.rest.client.http.RestClientInvocation.lambda$processResponseBody$6(RestClientInvocation.java:234)
 ~[transport-rest-client-1.3.0.jar:1.3.0]
           at 
org.apache.servicecomb.core.provider.consumer.ReactiveResponseExecutor.execute(ReactiveResponseExecutor.java:28)
 ~[java-chassis-core-1.3.0.jar:1.3.0]
           at 
org.apache.servicecomb.transport.rest.client.http.RestClientInvocation.processResponseBody(RestClientInvocation.java:225)
 ~[transport-rest-client-1.3.0.jar:1.3.0]
   `
   
   上述异常在边缘服务中发现,使用场景是边缘服务中调用用户鉴权服务,但是鉴权失败了。
   
   
定位发现,原因在于直接参考了官方org.apache.servicecomb.demo.edge.service.handler.AuthHandler的例子,当鉴权不通过时,未提前退出,而是继续invocation.next(asyncResp)
   


----------------------------------------------------------------
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:
[email protected]


Reply via email to