ableYang123 opened a new issue, #4010:
URL: https://github.com/apache/shenyu/issues/4010

   ### Is there an existing issue for this?
   
   - [X] I have searched the existing issues
   
   ### Current Behavior
   
   When I was using the Sign Plugin, a DataBufferLimitException occurred when 
the JSON request was too large 
   
![image](https://user-images.githubusercontent.com/29156983/192675494-49d79157-9b07-460e-9d6c-2bce0b73b233.png)
   
   
   ### Expected Behavior
   
   I hope by changing the 'spring. Codec. MaxInMemorySize' properties to 
eliminate the error 
   I eliminated this error by modifying the Sign Plugin
   Here is my modified code
   org.apache.shenyu.plugin.sign.SignPlugin
   `public SignPlugin(List<HttpMessageReader<?>> readers, final SignService 
signService) {
           MESSAGE_READERS = readers;
           this.signService = signService;
       }`
   
![image](https://user-images.githubusercontent.com/29156983/192676895-0ee99cbb-0a3f-45f3-89a8-fce71ff84b43.png)
   org.apache.shenyu.springboot.starter.plugin.sign.SignPluginConfiguration
   `@Bean
       public ShenyuPlugin signPlugin(final SignService signService, final 
ServerCodecConfigurer configurer) {
   
           return new SignPlugin(configurer.getReaders(), signService);
       }`
   
![image](https://user-images.githubusercontent.com/29156983/192676796-1780ee9c-cad1-4150-ab1e-6ac771dc23de.png)
   
   
   ### Steps To Reproduce
   
   1.ShenYu version(s):2.5.0
   2.Enable the Sign Plugin configuration
   3This error occurs when a request is made with more than 262144 bits of JSON 
   
   ### Environment
   
   ```markdown
   ShenYu version(s):2.5.0
   ```
   
   
   ### Debug logs
   
   `2022-09-27 11:19:30 [shenyu-netty-kqueue-5] ERROR 
org.apache.shenyu.web.handler.GlobalErrorHandler - handle error: [26ba5fb1-2] 
Resolved [DataBufferLimitException: Exceeded limit on max bytes to buffer : 
262144] for HTTP POST xxx
   org.springframework.core.io.buffer.DataBufferLimitException: Exceeded limit 
on max bytes to buffer : 262144
           at 
org.springframework.core.io.buffer.LimitedDataBufferList.raiseLimitException(LimitedDataBufferList.java:99)
           Suppressed: 
reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
   Error has been observed at the following site(s):
           *__checkpoint ⇢ 
org.apache.shenyu.web.configuration.ErrorHandlerConfiguration$1 
[DefaultWebFilterChain]
           *__checkpoint ⇢ org.apache.shenyu.web.filter.FileSizeFilter 
[DefaultWebFilterChain]
           *__checkpoint ⇢ org.apache.shenyu.web.filter.CrossFilter 
[DefaultWebFilterChain]
           *__checkpoint ⇢ 
org.springframework.security.web.server.authorization.AuthorizationWebFilter 
[DefaultWebFilterChain]
           *__checkpoint ⇢ 
org.springframework.security.web.server.authorization.ExceptionTranslationWebFilter
 [DefaultWebFilterChain]
           *__checkpoint ⇢ 
org.springframework.security.web.server.authentication.logout.LogoutWebFilter 
[DefaultWebFilterChain]
           *__checkpoint ⇢ 
org.springframework.security.web.server.savedrequest.ServerRequestCacheWebFilter
 [DefaultWebFilterChain]
           *__checkpoint ⇢ 
org.springframework.security.web.server.context.SecurityContextServerWebExchangeWebFilter
 [DefaultWebFilterChain]
           *__checkpoint ⇢ 
org.springframework.security.web.server.context.ReactorContextWebFilter 
[DefaultWebFilterChain]
           *__checkpoint ⇢ 
org.springframework.security.web.server.header.HttpHeaderWriterWebFilter 
[DefaultWebFilterChain]
           *__checkpoint ⇢ 
org.springframework.security.config.web.server.ServerHttpSecurity$ServerWebExchangeReactorContextWebFilter
 [DefaultWebFilterChain]
           *__checkpoint ⇢ 
org.springframework.security.web.server.WebFilterChainProxy 
[DefaultWebFilterChain]
           *__checkpoint ⇢ 
org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter 
[DefaultWebFilterChain]
           *__checkpoint ⇢ HTTP POST "xxxx" [ExceptionHandlingWebHandler]
   Original Stack Trace:
                   at 
org.springframework.core.io.buffer.LimitedDataBufferList.raiseLimitException(LimitedDataBufferList.java:99)
                   at 
org.springframework.core.io.buffer.LimitedDataBufferList.updateCount(LimitedDataBufferList.java:92)
                   at 
org.springframework.core.io.buffer.LimitedDataBufferList.add(LimitedDataBufferList.java:58)
                   at 
reactor.core.publisher.MonoCollect$CollectSubscriber.onNext(MonoCollect.java:118)
                   at 
reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)
                   at 
reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:200)
                   at 
reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)
                   at 
reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:364)
                   at 
reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:404)
                   at 
reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:595)
                   at 
reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:93)
                   at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
                   at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
                   at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
                   at 
reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:266)
                   at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
                   at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
                   at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
                   at 
io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
                   at 
io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327)
                   at 
io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:314)
                   at 
io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:435)
                   at 
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:279)
                   at 
io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
                   at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
                   at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
                   at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
                   at 
io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
                   at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
                   at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
                   at 
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
                   at 
io.netty.channel.kqueue.AbstractKQueueStreamChannel$KQueueStreamUnsafe.readReady(AbstractKQueueStreamChannel.java:544)
                   at 
io.netty.channel.kqueue.AbstractKQueueChannel$AbstractKQueueUnsafe.readReady(AbstractKQueueChannel.java:383)
                   at 
io.netty.channel.kqueue.KQueueEventLoop.processReady(KQueueEventLoop.java:211)
                   at 
io.netty.channel.kqueue.KQueueEventLoop.run(KQueueEventLoop.java:289)
                   at 
io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:995)
                   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:832)
   2022-09-27 11:19:30 [shenyu-netty-kqueue-5] ERROR 
reactor.netty.channel.ChannelOperationsHandler - [26ba5fb1-1, 
L:/[0:0:0:0:0:0:0:1%0]:9195 - R:/[0:0:0:0:0:0:0:1%0]:53137] Error was received 
while reading the incoming data. The connection will be closed.
   io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1
           at 
io.netty.util.internal.ReferenceCountUpdater.toLiveRealRefCnt(ReferenceCountUpdater.java:83)
           at 
io.netty.util.internal.ReferenceCountUpdater.release(ReferenceCountUpdater.java:147)
           at 
io.netty.buffer.AbstractReferenceCountedByteBuf.release(AbstractReferenceCountedByteBuf.java:101)
           at 
io.netty.handler.codec.http.DefaultHttpContent.release(DefaultHttpContent.java:92)
           at 
io.netty.util.ReferenceCountUtil.release(ReferenceCountUtil.java:90)
           at 
reactor.netty.channel.FluxReceive.onInboundNext(FluxReceive.java:367)
           at 
reactor.netty.channel.ChannelOperations.onInboundNext(ChannelOperations.java:404)
           at 
reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:595)
           at 
reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:93)
           at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
           at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
           at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
           at 
reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:266)
           at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
           at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
           at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
           at 
io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
           at 
io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327)
           at 
io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:314)
           at 
io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:435)
           at 
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:279)
           at 
io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
           at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
           at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
           at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
           at 
io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
           at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
           at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
           at 
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
           at 
io.netty.channel.kqueue.AbstractKQueueStreamChannel$KQueueStreamUnsafe.readReady(AbstractKQueueStreamChannel.java:544)
           at 
io.netty.channel.kqueue.AbstractKQueueChannel$AbstractKQueueUnsafe.readReady(AbstractKQueueChannel.java:383)
           at 
io.netty.channel.kqueue.KQueueEventLoop.processReady(KQueueEventLoop.java:211)
           at 
io.netty.channel.kqueue.KQueueEventLoop.run(KQueueEventLoop.java:289)
           at 
io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:995)
           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:832)`
   
   ### Anything else?
   
   I tracked down the bug using Debug mode and fixed the problem 
   Here, a new Reader is built using the default configuration;  I changed it 
to get it from Spring IOC and the error went away 
   
![image](https://user-images.githubusercontent.com/29156983/192678627-3db53458-62b9-4af8-ab6a-98163b892a55.png)
   
   
![image](https://user-images.githubusercontent.com/29156983/192678424-b42a955f-51fe-4f54-b4d0-010ebce455d2.png)
   
   Here is my modified code
   org.apache.shenyu.plugin.sign.SignPlugin
   `public SignPlugin(List<HttpMessageReader<?>> readers, final SignService 
signService) {
           MESSAGE_READERS = readers;
           this.signService = signService;
       }`
   
![image](https://user-images.githubusercontent.com/29156983/192676895-0ee99cbb-0a3f-45f3-89a8-fce71ff84b43.png)
   org.apache.shenyu.springboot.starter.plugin.sign.SignPluginConfiguration
   `@Bean
       public ShenyuPlugin signPlugin(final SignService signService, final 
ServerCodecConfigurer configurer) {
   
           return new SignPlugin(configurer.getReaders(), signService);
       }`
   
![image](https://user-images.githubusercontent.com/29156983/192676796-1780ee9c-cad1-4150-ab1e-6ac771dc23de.png)


-- 
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.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to