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]