被这个问题困扰了一天。开发环境能正常转发请求,也能收到结果。但测试环境转发时就会卡住。

百度了一圈,说明 java.lang.IllegalStateException: COMPLETED 是过滤器引起的。 由于过滤器我都加了配置项,可以通过配置文件关闭。于是修改配置项把过滤器全部关掉,重启服务 还是无法转发。

最后是通过改代码把过滤器关闭,然后成功转发请求。

虽然不知道原因,但总算把问题解决了。

2023-06-14 16:45:12.584 WARN 1 --- [or-http-epoll-8] r.netty.http.client.HttpClientConnect : [id: 0xf01830c9, L:/xx.xx.xxx.xx:35370 - R:edds-api-fcid-test6-8080.msxfcloud.test/xx.xx.x.xxx:80] The connection observed an error

java.lang.IllegalStateException: COMPLETED

at org.springframework.http.server.reactive.AbstractListenerReadPublisher$State.subscribe(AbstractListenerReadPublisher.java:428)

at org.springframework.http.server.reactive.AbstractListenerReadPublisher.subscribe(AbstractListenerReadPublisher.java:105)

at reactor.core.publisher.FluxSource.subscribe(FluxSource.java:67)

at reactor.core.publisher.Flux.subscribe(Flux.java:8466)

at reactor.netty.channel.MonoSendMany.subscribe(MonoSendMany.java:102)

at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)

at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)

at reactor.core.publisher.Operators.complete(Operators.java:137)

at reactor.netty.FutureMono$DeferredFutureMono.subscribe(FutureMono.java:130)

at reactor.core.publisher.Mono.subscribe(Mono.java:4397)

at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263)

at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)

at reactor.core.publisher.Mono.subscribe(Mono.java:4397)

at reactor.netty.NettyOutbound.subscribe(NettyOutbound.java:336)

at reactor.core.publisher.MonoSource.subscribe(MonoSource.java:69)

at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)

at reactor.netty.http.client.HttpClientConnect$HttpIOHandlerObserver.onStateChange(HttpClientConnect.java:446)

at reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:537)

at reactor.netty.resources.PooledConnectionProvider$DisposableAcquire.onStateChange(PooledConnectionProvider.java:563)

at reactor.netty.resources.PooledConnectionProvider$PooledConnection.onStateChange(PooledConnectionProvider.java:450)

at reactor.netty.channel.ChannelOperationsHandler.channelActive(ChannelOperationsHandler.java:65)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:230)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:216)

at io.netty.channel.AbstractChannelHandlerContext.fireChannelActive(AbstractChannelHandlerContext.java:209)

at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelActive(CombinedChannelDuplexHandler.java:412)

at io.netty.channel.ChannelInboundHandlerAdapter.channelActive(ChannelInboundHandlerAdapter.java:69)

at io.netty.channel.CombinedChannelDuplexHandler.channelActive(CombinedChannelDuplexHandler.java:211)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:230)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:216)

at io.netty.channel.AbstractChannelHandlerContext.fireChannelActive(AbstractChannelHandlerContext.java:209)

at io.netty.channel.DefaultChannelPipeline$HeadContext.channelActive(DefaultChannelPipeline.java:1398)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:230)

at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:216)

at io.netty.channel.DefaultChannelPipeline.fireChannelActive(DefaultChannelPipeline.java:895)

at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.fulfillConnectPromise(AbstractEpollChannel.java:621)

at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.finishConnect(AbstractEpollChannel.java:654)

at io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.epollOutReady(AbstractEpollChannel.java:530)

at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:470)

at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)

at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)

at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)

at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)

at java.base/java.lang.Thread.run(Thread.java:829)

2023-06-14 16:45:12.586 ERROR 1 --- [or-http-epoll-8] c.m.f.o.g.c.GlobalExceptionConfiguration : Error Spring Cloud Gateway :

java.lang.IllegalStateException: COMPLETED

at org.springframework.http.server.reactive.AbstractListenerReadPublisher$State.subscribe(AbstractListenerReadPublisher.java:428)

Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:

Error has been observed at the following site(s):

*__checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain]

*__checkpoint ⇢ HTTP POST "/edds-api/api/v1/public/person?key1=value1&key2=value2" [ExceptionHandlingWebHandler]

Original Stack Trace:

at org.springframework.http.server.reactive.AbstractListenerReadPublisher$State.subscribe(AbstractListenerReadPublisher.java:428)

at org.springframework.http.server.reactive.AbstractListenerReadPublisher.subscribe(AbstractListenerReadPublisher.java:105)

at reactor.core.publisher.FluxSource.subscribe(FluxSource.java:67)

at reactor.core.publisher.Flux.subscribe(Flux.java:8466)

at reactor.netty.channel.MonoSendMany.subscribe(MonoSendMany.java:102)

at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:240)

at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203)

at reactor.core.publisher.Operators.complete(Operators.java:137)

at reactor.netty.FutureMono$DeferredFutureMono.subscribe(FutureMono.java:130)

at reactor.core.publisher.Mono.subscribe(Mono.java:4397)

at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263)

at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51)

at reactor.core.publisher.Mono.subscribe(Mono.java:4397)

at reactor.netty.NettyOutbound.subscribe(NettyOutbound.java:336)

相关文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: