qicz opened a new issue #2014:
URL: https://github.com/apache/incubator-shenyu/issues/2014


   ## Describe the bug
   when set the `contextPath` is `/**`,  call the api will report  "String 
index out of range"
   
   ## Environment
   
   - ShenYu version(s): 2.4.1-SNAPSHOT
   
   ## Steps to reproduce
   - set context path
   
![image](https://user-images.githubusercontent.com/2174082/131871416-c4490e0e-4d16-4bbf-9a9b-72216f4e0dd6.png)
   
   - set divide
   
![image](https://user-images.githubusercontent.com/2174082/131872997-ed54a664-a7b4-413f-b324-9ed3fda7f5bb.png)
   
   ## Expected behavior
   
![image](https://user-images.githubusercontent.com/2174082/131872027-01bcd509-ae86-4f3a-973e-16fe6cfde2c9.png)
   
   
![image](https://user-images.githubusercontent.com/2174082/131873246-9d7ca01f-7686-4e8e-94e0-6958ab96f4ef.png)
   
   ## Debug logs
   <!--
   Add your debug logs here.
   -->
   
   <details>
   <summary>Click to expand</summary>
   
   ```
   2021-09-02 23:31:47 [shenyu-netty-kqueue-3] INFO  
org.apache.shenyu.plugin.base.AbstractShenyuPlugin - context_path selector 
success match , selector name :/aa
   2021-09-02 23:31:47 [shenyu-netty-kqueue-3] INFO  
org.apache.shenyu.plugin.base.AbstractShenyuPlugin - context_path rule success 
match , rule name :aa
   2021-09-02 23:31:47 [shenyu-netty-kqueue-3] ERROR 
org.apache.shenyu.web.handler.GlobalErrorHandler - [f74cce32] Resolved 
[StringIndexOutOfBoundsException: String index out of range: -1] for HTTP GET /a
   2021-09-02 23:31:47 [shenyu-netty-kqueue-3] ERROR 
org.springframework.boot.autoconfigure.web.reactive.error.AbstractErrorWebExceptionHandler
 - [f74cce32]  500 Server Error for HTTP GET "/a"
   java.lang.StringIndexOutOfBoundsException: String index out of range: -1
        at java.lang.String.substring(String.java:1931)
        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.WebSocketParamFilter 
[DefaultWebFilterChain]
        |_ checkpoint ⇢ org.apache.shenyu.web.filter.FileSizeFilter 
[DefaultWebFilterChain]
        |_ checkpoint ⇢ org.apache.shenyu.bootstrap.filter.HealthFilter 
[DefaultWebFilterChain]
        |_ checkpoint ⇢ org.apache.shenyu.web.filter.CrossFilter 
[DefaultWebFilterChain]
        |_ checkpoint ⇢ org.apache.shenyu.web.filter.LocalDispatcherFilter 
[DefaultWebFilterChain]
        |_ checkpoint ⇢ 
org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter 
[DefaultWebFilterChain]
        |_ checkpoint ⇢ HTTP GET "/a" [ExceptionHandlingWebHandler]
   Stack trace:
                at java.lang.String.substring(String.java:1931)
                at 
org.apache.shenyu.plugin.context.path.ContextPathPlugin.buildContextPath(ContextPathPlugin.java:92)
                at 
org.apache.shenyu.plugin.context.path.ContextPathPlugin.doExecute(ContextPathPlugin.java:55)
                at 
org.apache.shenyu.plugin.base.AbstractShenyuPlugin.execute(AbstractShenyuPlugin.java:93)
                at 
org.apache.shenyu.web.handler.ShenyuWebHandler$DefaultShenyuPluginChain.lambda$execute$0(ShenyuWebHandler.java:133)
                at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:44)
                at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
                at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
                at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
                at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
                at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
                at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
                at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
                at 
reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55)
                at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
                at 
reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:150)
                at 
reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:67)
                at 
reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2186)
                at 
reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:1994)
                at 
reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:1868)
                at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:54)
                at 
reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55)
                at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
                at 
reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55)
                at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
                at 
reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55)
                at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
                at 
reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55)
                at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
                at 
reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55)
                at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
                at 
reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55)
                at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
                at 
reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55)
                at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
                at reactor.core.publisher.Mono.subscribe(Mono.java:4105)
                at 
reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.drain(MonoIgnoreThen.java:172)
                at 
reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:56)
                at 
reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:55)
                at 
reactor.netty.http.server.HttpServerHandle.onStateChange(HttpServerHandle.java:64)
                at 
reactor.netty.tcp.TcpServerBind$ChildObserver.onStateChange(TcpServerBind.java:226)
                at 
reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:441)
                at 
reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:89)
                at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
                at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
                at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
                at 
reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:167)
                at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
                at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
                at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
                at 
io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:438)
                at 
io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:326)
                at 
io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:300)
                at 
io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:253)
                at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
                at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
                at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:352)
                at 
io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1422)
                at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:374)
                at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:360)
                at 
io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:931)
                at 
io.netty.channel.kqueue.AbstractKQueueStreamChannel$KQueueStreamUnsafe.readReady(AbstractKQueueStreamChannel.java:544)
                at 
io.netty.channel.kqueue.AbstractKQueueChannel$AbstractKQueueUnsafe.readReady(AbstractKQueueChannel.java:381)
                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$6.run(SingleThreadEventExecutor.java:1050)
                at 
io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
                at 
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
                at java.lang.Thread.run(Thread.java:748)
   2021-09-02 23:31:47 [shenyu-netty-kqueue-3] INFO  
org.apache.shenyu.plugin.base.AbstractShenyuPlugin - context_path selector 
success match , selector name :/aa
   2021-09-02 23:31:47 [shenyu-netty-kqueue-3] INFO  
org.apache.shenyu.plugin.base.AbstractShenyuPlugin - context_path rule success 
match , rule name :aa
   2021-09-02 23:31:47 [shenyu-netty-kqueue-3] ERROR 
org.apache.shenyu.plugin.api.utils.WebFluxResultUtils - can not match selector 
data: divide
   ```
   </details>
   


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