You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shenyu.apache.org by GitBox <gi...@apache.org> on 2022/06/13 15:23:14 UTC

[GitHub] [incubator-shenyu] erdengk opened a new issue, #3548: [BUG] There seems to be a bug in the redis mode of the cache plugin

erdengk opened a new issue, #3548:
URL: https://github.com/apache/incubator-shenyu/issues/3548

   ### Is there an existing issue for this?
   
   - [X] I have searched the existing issues
   
   ### Current Behavior
   
   I want to use redis mode of cache plugin
   
   ### Expected Behavior
   
   The redis mode of the cache plugin works fine.
   
   ### Steps To Reproduce
   
   Configure the cache plugin according to the documentation on the official website:https://shenyu.apache.org/zh/docs/plugin-center/cache/cache-plugin
   
   run shenyu-admin \ shenyu-bootstrap
   
   Use redis mode
   ![image](https://user-images.githubusercontent.com/37730787/173387552-611fc4b4-c5a7-4356-981f-7da6ed521333.png)
   selector 
   ![image](https://user-images.githubusercontent.com/37730787/173387602-0b87f569-9690-4d20-bd5e-c052ef59ed18.png)
   rule
   ![image](https://user-images.githubusercontent.com/37730787/173387758-48cf10de-b354-421d-8982-63e2489639e3.png)
   
   
   GET http://localhost:9195/http/test/cache
   
   ![image](https://user-images.githubusercontent.com/37730787/173388008-0d8f4aee-4690-43ca-8a91-6637aa236b60.png)
   
   cache selector success match  and  cache rule success match 
   
   ![image](https://user-images.githubusercontent.com/37730787/173388068-5658524d-a535-4116-8dd6-e17b79acfdd9.png)
   
   
   
   
   
   
   
   
   ### Environment
   
   ```markdown
   ShenYu version(s):latest
   ```
   
   
   ### Debug logs
   
   ```
   2022-06-13 23:17:57 [WebSocketConnectReadThread-43] INFO  org.apache.shenyu.plugin.sync.data.websocket.client.ShenyuWebsocketClient - handleResult({"groupType":"PLUGIN","eventType":"UPDATE","data":[{"id":"30","name":"cache","config":"{\"cacheType\":\"redis\",\"database\":\"0\",\"master\":\"master\",\"mode\":\"standalone\",\"url\":\"xxxxxxxx:6379\",\"maxIdle\":\"8\",\"minIdle\":\"0\",\"maxActive\":\"8\",\"maxWait\":\"-1\"}","role":"Cache","enabled":true,"sort":10}]})
   2022-06-13 23:17:57 [WebSocketConnectReadThread-43] INFO  org.apache.shenyu.plugin.cache.handler.CachePluginDataHandler - use the redis cache.
   2022-06-13 23:17:57 [WebSocketConnectReadThread-43] INFO  org.apache.shenyu.plugin.cache.handler.CachePluginDataHandler - cache plugin initialized.
   2022-06-13 23:17:57 [WebSocketConnectReadThread-43] INFO  org.apache.shenyu.web.handler.ShenyuWebHandler - shenyu use plugin:[cache]
   2022-06-13 23:18:01 [parallel-6] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - cache selector success match , selector name :test
   2022-06-13 23:18:01 [parallel-6] INFO  org.apache.shenyu.plugin.base.AbstractShenyuPlugin - cache rule success match , rule name :test
   2022-06-13 23:18:01 [parallel-6] ERROR org.apache.shenyu.web.handler.GlobalErrorHandler - handle error: [ac957bb8-19] Resolved [IllegalStateException: block()/blockFirst()/blockLast() are blocking, which is not supported in thread parallel-6] for HTTP GET /http/test/cache
   java.lang.IllegalStateException: block()/blockFirst()/blockLast() are blocking, which is not supported in thread parallel-6
   	at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:83)
   	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 GET "/http/test/cache" [ExceptionHandlingWebHandler]
   Original Stack Trace:
   		at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:83)
   		at reactor.core.publisher.Mono.block(Mono.java:1707)
   		at org.apache.shenyu.plugin.cache.redis.RedisCache.getData(RedisCache.java:71)
   		at org.apache.shenyu.plugin.cache.CachePlugin.doExecute(CachePlugin.java:52)
   		at org.apache.shenyu.plugin.base.AbstractShenyuPlugin.execute(AbstractShenyuPlugin.java:93)
   		at org.apache.shenyu.web.handler.ShenyuWebHandler$DefaultShenyuPluginChain.lambda$execute$0(ShenyuWebHandler.java:214)
   		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.InternalMonoOperator.subscribe(InternalMonoOperator.java:64)
   		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
   		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64)
   		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
   		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64)
   		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
   		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
   		at reactor.core.publisher.Mono.subscribe(Mono.java:4400)
   		at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82)
   		at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299)
   		at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onComplete(MonoPeekTerminal.java:299)
   		at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:148)
   		at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74)
   		at reactor.core.publisher.FluxFilter$FilterSubscriber.onNext(FluxFilter.java:113)
   		at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:101)
   		at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82)
   		at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.innerNext(FluxConcatMap.java:282)
   		at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:863)
   		at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)
   		at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151)
   		at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onNext(FluxMapFuseable.java:129)
   		at reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.onNext(FluxFilterFuseable.java:118)
   		at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2398)
   		at reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.request(FluxFilterFuseable.java:191)
   		at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.request(FluxMapFuseable.java:171)
   		at reactor.core.publisher.MonoFlatMap$FlatMapMain.onSubscribe(MonoFlatMap.java:110)
   		at reactor.core.publisher.FluxMapFuseable$MapFuseableSubscriber.onSubscribe(FluxMapFuseable.java:96)
   		at reactor.core.publisher.FluxFilterFuseable$FilterFuseableSubscriber.onSubscribe(FluxFilterFuseable.java:87)
   		at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55)
   		at reactor.core.publisher.Mono.subscribe(Mono.java:4400)
   		at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:451)
   		at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onSubscribe(FluxConcatMap.java:219)
   		at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:165)
   		at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:87)
   		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64)
   		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
   		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64)
   		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
   		at reactor.core.publisher.Mono.subscribe(Mono.java:4400)
   		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:4400)
   		at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82)
   		at reactor.core.publisher.FluxFilter$FilterSubscriber.onComplete(FluxFilter.java:166)
   		at reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber.onComplete(FluxPeekFuseable.java:940)
   		at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:85)
   		at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2400)
   		at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2194)
   		at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2068)
   		at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55)
   		at reactor.core.publisher.Mono.subscribe(Mono.java:4400)
   		at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:82)
   		at reactor.core.publisher.MonoNext$NextSubscriber.onComplete(MonoNext.java:102)
   		at reactor.core.publisher.FluxFilter$FilterSubscriber.onComplete(FluxFilter.java:166)
   		at reactor.core.publisher.FluxFlatMap$FlatMapMain.checkTerminated(FluxFlatMap.java:846)
   		at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:608)
   		at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:588)
   		at reactor.core.publisher.FluxFlatMap$FlatMapMain.onComplete(FluxFlatMap.java:465)
   		at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277)
   		at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:294)
   		at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:230)
   		at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.request(FluxPeekFuseable.java:144)
   		at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:371)
   		at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onSubscribe(FluxPeekFuseable.java:178)
   		at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:165)
   		at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:87)
   		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64)
   		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52)
   		at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:157)
   		at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816)
   		at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onComplete(FluxDefaultIfEmpty.java:109)
   		at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144)
   		at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144)
   		at reactor.core.publisher.FluxFilter$FilterSubscriber.onComplete(FluxFilter.java:166)
   		at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onComplete(FluxMap.java:275)
   		at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1817)
   		at reactor.core.publisher.MonoCacheTime$CoordinatorSubscriber.signalCached(MonoCacheTime.java:337)
   		at reactor.core.publisher.MonoCacheTime$CoordinatorSubscriber.onNext(MonoCacheTime.java:354)
   		at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:200)
   		at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74)
   		at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180)
   		at reactor.core.publisher.MonoPublishOn$PublishOnSubscriber.run(MonoPublishOn.java:181)
   		at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68)
   		at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28)
   		at java.util.concurrent.FutureTask.run(FutureTask.java:266)
   		at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
   		at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
   		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
   		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
   		at java.lang.Thread.run(Thread.java:748)
   
   ```
   
   ### Anything else?
   
   _No response_


-- 
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: notifications-unsubscribe@shenyu.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [incubator-shenyu] erdengk commented on issue #3548: [BUG] There seems to be a bug in the redis mode of the cache plugin

Posted by GitBox <gi...@apache.org>.
erdengk commented on issue #3548:
URL: https://github.com/apache/incubator-shenyu/issues/3548#issuecomment-1154744189

   @moremind  ok,thanks


-- 
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: notifications-unsubscribe@shenyu.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [incubator-shenyu] moremind commented on issue #3548: [BUG] There seems to be a bug in the redis mode of the cache plugin

Posted by GitBox <gi...@apache.org>.
moremind commented on issue #3548:
URL: https://github.com/apache/incubator-shenyu/issues/3548#issuecomment-1154569212

   because cache plugin use blocking method, this is no allow.


-- 
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: notifications-unsubscribe@shenyu.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [incubator-shenyu] yu199195 closed issue #3548: [BUG] There seems to be a bug in the redis mode of the cache plugin

Posted by GitBox <gi...@apache.org>.
yu199195 closed issue #3548: [BUG] There seems to be a bug in the redis mode of the cache plugin
URL: https://github.com/apache/incubator-shenyu/issues/3548


-- 
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: notifications-unsubscribe@shenyu.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [incubator-shenyu] moremind commented on issue #3548: [BUG] There seems to be a bug in the redis mode of the cache plugin

Posted by GitBox <gi...@apache.org>.
moremind commented on issue #3548:
URL: https://github.com/apache/incubator-shenyu/issues/3548#issuecomment-1154618922

   ```
       @Override
       public byte[] getData(final String key) {
           return this.redisTemplate.opsForValue().get(key).block();
       }
   ```
   this use blocking method get data is not allowed.


-- 
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: notifications-unsubscribe@shenyu.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


[GitHub] [incubator-shenyu] moremind commented on issue #3548: [BUG] There seems to be a bug in the redis mode of the cache plugin

Posted by GitBox <gi...@apache.org>.
moremind commented on issue #3548:
URL: https://github.com/apache/incubator-shenyu/issues/3548#issuecomment-1154622807

   I will submit new pr fix it.


-- 
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: notifications-unsubscribe@shenyu.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org