Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HintBasedServiceInstanceListSupplier withCaching() throw NPE #1076

Closed
lin1005q opened this issue Mar 4, 2022 · 9 comments
Closed

HintBasedServiceInstanceListSupplier withCaching() throw NPE #1076

lin1005q opened this issue Mar 4, 2022 · 9 comments
Assignees
Labels

Comments

@lin1005q
Copy link

lin1005q commented Mar 4, 2022

Describe the bug
Please provide details of the problem, including the version of Spring Cloud that you
are using.

  • spring cloud: 2021.0.1
  • spring boot: 2.6.3

add this code

    @Bean
    public ServiceInstanceListSupplier discoveryClientServiceInstanceListSupplier(ConfigurableApplicationContext context) {
        return ServiceInstanceListSupplier.builder()
                .withDiscoveryClient()
                .withHints()
                .withCaching()
                .build(context);
    }

throw cache about NPE

2022-03-04 09:20:04.291 DEBUG 48002 --- [ctor-http-nio-3] o.s.w.s.adapter.HttpWebHandlerAdapter    : [883e8386-2] HTTP GET "/api/auth/config/name"
2022-03-04 09:20:04.293 DEBUG 48002 --- [ctor-http-nio-3] o.s.c.g.h.RoutePredicateHandlerMapping   : Route matched: consumer
2022-03-04 09:20:04.293 DEBUG 48002 --- [ctor-http-nio-3] o.s.c.g.h.RoutePredicateHandlerMapping   : Mapping [Exchange: GET http://127.0.0.1:8766/api/auth/config/name] to Route{id='consumer', uri=lb://microservice-test-consumer, order=8000, predicate=Paths: [/api/auth/**], match trailing slash: true, gatewayFilters=[[[StripPrefix parts = 2], order = 1]], metadata={}}
2022-03-04 09:20:04.293 DEBUG 48002 --- [ctor-http-nio-3] o.s.c.g.h.RoutePredicateHandlerMapping   : [883e8386-2] Mapped to org.springframework.cloud.gateway.handler.FilteringWebHandler@154fd108
2022-03-04 09:20:04.293 DEBUG 48002 --- [ctor-http-nio-3] o.s.c.g.handler.FilteringWebHandler      : Sorted gatewayFilterFactories: [[GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.RemoveCachedBodyFilter@55c1ced9}, order = -2147483648], [GatewayFilterAdapter{delegate=com.alibaba.csp.sentinel.adapter.gateway.sc.SentinelGatewayFilter@1894fa9f}, order = -2147483648], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.AdaptCachedBodyGlobalFilter@3002e397}, order = -2147482648], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.NettyWriteResponseFilter@59b492ec}, order = -1], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.ForwardPathFilter@6c5ca0b6}, order = 0], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.GatewayMetricsFilter@1a88c4f5}, order = 0], [[StripPrefix parts = 2], order = 1], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.RouteToRequestUrlFilter@49cc9b2a}, order = 10000], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.ReactiveLoadBalancerClientFilter@4e48462d}, order = 10150], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.LoadBalancerServiceInstanceCookieFilter@17216605}, order = 10151], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.WebsocketRoutingFilter@37b01ce2}, order = 2147483646], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.NettyRoutingFilter@10a907ec}, order = 2147483647], [GatewayFilterAdapter{delegate=org.springframework.cloud.gateway.filter.ForwardRoutingFilter@11826398}, order = 2147483647]]
2022-03-04 09:20:04.295 DEBUG 48002 --- [ctor-http-nio-3] a.w.r.e.AbstractErrorWebExceptionHandler : [883e8386-2] Resolved [NullPointerException: Cannot invoke "Object.hashCode()" because "key" is null] for HTTP GET /api/auth/config/name
2022-03-04 09:20:04.296 ERROR 48002 --- [ctor-http-nio-3] a.w.r.e.AbstractErrorWebExceptionHandler : [883e8386-2]  500 Server Error for HTTP GET "/api/auth/config/name"

java.lang.NullPointerException: Cannot invoke "Object.hashCode()" because "key" is null
	at java.base/java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936) ~[na:na]
	Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 
Error has been observed at the following site(s):
	*__checkpoint ⇢ org.springframework.cloud.gateway.filter.WeightCalculatorWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ org.springframework.boot.actuate.metrics.web.reactive.server.MetricsWebFilter [DefaultWebFilterChain]
	*__checkpoint ⇢ HTTP GET "/api/auth/config/name" [ExceptionHandlingWebHandler]
Original Stack Trace:
		at java.base/java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936) ~[na:na]
		at com.stoyanr.evictor.map.ConcurrentMapWithTimedEvictionDecorator.get(ConcurrentMapWithTimedEvictionDecorator.java:194) ~[evictor-1.0.0.jar:na]
		at org.springframework.cloud.loadbalancer.cache.DefaultLoadBalancerCache.lookup(DefaultLoadBalancerCache.java:95) ~[spring-cloud-loadbalancer-3.1.1.jar:3.1.1]
		at org.springframework.cache.support.AbstractValueAdaptingCache.get(AbstractValueAdaptingCache.java:65) ~[spring-context-5.3.15.jar:5.3.15]
		at org.springframework.cloud.loadbalancer.core.CachingServiceInstanceListSupplier.lambda$new$0(CachingServiceInstanceListSupplier.java:64) ~[spring-cloud-loadbalancer-3.1.1.jar:3.1.1]
		at reactor.cache.CacheFlux.lambda$null$4(CacheFlux.java:152) ~[reactor-extra-3.4.6.jar:3.4.6]
		at reactor.core.publisher.FluxDefer.subscribe(FluxDefer.java:46) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.Mono.subscribe(Mono.java:4400) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:255) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.Mono.subscribe(Mono.java:4400) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:255) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.4.14.jar:3.4.14]
		at com.alibaba.csp.sentinel.adapter.reactor.MonoSentinelOperator.subscribe(MonoSentinelOperator.java:40) ~[sentinel-reactor-adapter-1.8.3.jar:na]
		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.Mono.subscribe(Mono.java:4400) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:255) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:157) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.innerNext(FluxConcatMap.java:282) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:863) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:120) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:151) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:120) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoNext$NextSubscriber.onNext(MonoNext.java:82) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.innerNext(FluxConcatMap.java:282) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxConcatMap$ConcatMapInner.onNext(FluxConcatMap.java:863) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:180) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoFilterWhen$MonoFilterWhenMain.onNext(MonoFilterWhen.java:149) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2398) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoFilterWhen$MonoFilterWhenMain.onSubscribe(MonoFilterWhen.java:112) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.Mono.subscribe(Mono.java:4400) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:451) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onNext(FluxConcatMap.java:251) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxDematerialize$DematerializeSubscriber.onNext(FluxDematerialize.java:98) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxDematerialize$DematerializeSubscriber.onNext(FluxDematerialize.java:44) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:272) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:230) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxDematerialize$DematerializeSubscriber.request(FluxDematerialize.java:127) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onSubscribe(FluxConcatMap.java:236) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxDematerialize$DematerializeSubscriber.onSubscribe(FluxDematerialize.java:77) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:165) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:87) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.InternalFluxOperator.subscribe(InternalFluxOperator.java:62) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxDefer.subscribe(FluxDefer.java:54) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.Mono.subscribe(Mono.java:4400) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.drain(FluxConcatMap.java:451) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxConcatMap$ConcatMapImmediate.onSubscribe(FluxConcatMap.java:219) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:165) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:87) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.Mono.subscribe(Mono.java:4400) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:255) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) ~[reactor-core-3.4.14.jar:3.4.14]
		at reactor.netty.http.server.HttpServer$HttpServerHandle.onStateChange(HttpServer.java:962) ~[reactor-netty-http-1.0.15.jar:1.0.15]
		at reactor.netty.ReactorNetty$CompositeConnectionObserver.onStateChange(ReactorNetty.java:671) ~[reactor-netty-core-1.0.15.jar:1.0.15]
		at reactor.netty.transport.ServerTransport$ChildObserver.onStateChange(ServerTransport.java:478) ~[reactor-netty-core-1.0.15.jar:1.0.15]
		at reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:560) ~[reactor-netty-http-1.0.15.jar:1.0.15]
		at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:93) ~[reactor-netty-core-1.0.15.jar:1.0.15]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:220) ~[reactor-netty-http-1.0.15.jar:1.0.15]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327) ~[netty-codec-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299) ~[netty-codec-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:722) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:658) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:584) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496) ~[netty-transport-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) ~[netty-common-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.73.Final.jar:4.1.73.Final]
		at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.73.Final.jar:4.1.73.Final]
		at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]

2022-03-04 09:20:04.300 DEBUG 48002 --- [ctor-http-nio-3] o.s.http.codec.json.Jackson2JsonEncoder  : [883e8386-2] Encoding [{timestamp=Fri Mar 04 09:20:04 CST 2022, path=/api/auth/config/name, status=500, error=Internal Serv (truncated)...]
2022-03-04 09:20:04.301 DEBUG 48002 --- [ctor-http-nio-3] o.s.w.s.adapter.HttpWebHandlerAdapter    : [883e8386-2] Completed 500 INTERNAL_SERVER_ERROR
2022-03-04 09:20:19.687 DEBUG 48002 --- [oundedElastic-6] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_bussiness-gateway-test applying {pattern=/bussiness-gateway-test/**} to Path
2022-03-04 09:20:19.688 DEBUG 48002 --- [oundedElastic-5] o.s.c.g.filter.GatewayMetricsFilter      : New routes count: 3
2022-03-04 09:20:19.692 DEBUG 48002 --- [oundedElastic-6] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_bussiness-gateway-test applying filter {regexp=/bussiness-gateway-test/?(?<remaining>.*), replacement=/${remaining}} to RewritePath
2022-03-04 09:20:19.693 DEBUG 48002 --- [oundedElastic-6] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition matched: ReactiveCompositeDiscoveryClient_bussiness-gateway-test
2022-03-04 09:20:19.693 DEBUG 48002 --- [oundedElastic-6] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_microservice-test-consumer applying {pattern=/microservice-test-consumer/**} to Path
2022-03-04 09:20:19.695 DEBUG 48002 --- [oundedElastic-6] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_microservice-test-consumer applying filter {regexp=/microservice-test-consumer/?(?<remaining>.*), replacement=/${remaining}} to RewritePath
2022-03-04 09:20:19.697 DEBUG 48002 --- [oundedElastic-6] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition matched: ReactiveCompositeDiscoveryClient_microservice-test-consumer
2022-03-04 09:20:19.697 DEBUG 48002 --- [oundedElastic-6] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition consumer applying {_genkey_0=/api/auth/**} to Path
2022-03-04 09:20:19.698 DEBUG 48002 --- [oundedElastic-6] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition consumer applying filter {_genkey_0=2} to StripPrefix
2022-03-04 09:20:19.699 DEBUG 48002 --- [oundedElastic-6] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition matched: consumer
2022-03-04 09:20:49.694 DEBUG 48002 --- [oundedElastic-3] o.s.c.g.filter.GatewayMetricsFilter      : New routes count: 3
2022-03-04 09:20:49.697 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_bussiness-gateway-test applying {pattern=/bussiness-gateway-test/**} to Path
2022-03-04 09:20:49.699 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_bussiness-gateway-test applying filter {regexp=/bussiness-gateway-test/?(?<remaining>.*), replacement=/${remaining}} to RewritePath
2022-03-04 09:20:49.700 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition matched: ReactiveCompositeDiscoveryClient_bussiness-gateway-test
2022-03-04 09:20:49.701 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_microservice-test-consumer applying {pattern=/microservice-test-consumer/**} to Path
2022-03-04 09:20:49.702 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_microservice-test-consumer applying filter {regexp=/microservice-test-consumer/?(?<remaining>.*), replacement=/${remaining}} to RewritePath
2022-03-04 09:20:49.703 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition matched: ReactiveCompositeDiscoveryClient_microservice-test-consumer
2022-03-04 09:20:49.704 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition consumer applying {_genkey_0=/api/auth/**} to Path
2022-03-04 09:20:49.705 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition consumer applying filter {_genkey_0=2} to StripPrefix
2022-03-04 09:20:49.706 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition matched: consumer
2022-03-04 09:21:19.696 DEBUG 48002 --- [oundedElastic-6] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_bussiness-gateway-test applying {pattern=/bussiness-gateway-test/**} to Path
2022-03-04 09:21:19.696 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.filter.GatewayMetricsFilter      : New routes count: 3
2022-03-04 09:21:19.697 DEBUG 48002 --- [oundedElastic-6] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_bussiness-gateway-test applying filter {regexp=/bussiness-gateway-test/?(?<remaining>.*), replacement=/${remaining}} to RewritePath
2022-03-04 09:21:19.698 DEBUG 48002 --- [oundedElastic-6] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition matched: ReactiveCompositeDiscoveryClient_bussiness-gateway-test
2022-03-04 09:21:19.698 DEBUG 48002 --- [oundedElastic-6] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_microservice-test-consumer applying {pattern=/microservice-test-consumer/**} to Path
2022-03-04 09:21:19.699 DEBUG 48002 --- [oundedElastic-6] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_microservice-test-consumer applying filter {regexp=/microservice-test-consumer/?(?<remaining>.*), replacement=/${remaining}} to RewritePath
2022-03-04 09:21:19.701 DEBUG 48002 --- [oundedElastic-6] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition matched: ReactiveCompositeDiscoveryClient_microservice-test-consumer
2022-03-04 09:21:19.701 DEBUG 48002 --- [oundedElastic-6] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition consumer applying {_genkey_0=/api/auth/**} to Path
2022-03-04 09:21:19.702 DEBUG 48002 --- [oundedElastic-6] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition consumer applying filter {_genkey_0=2} to StripPrefix
2022-03-04 09:21:19.703 DEBUG 48002 --- [oundedElastic-6] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition matched: consumer
2022-03-04 09:21:49.698 DEBUG 48002 --- [oundedElastic-5] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_bussiness-gateway-test applying {pattern=/bussiness-gateway-test/**} to Path
2022-03-04 09:21:49.699 DEBUG 48002 --- [oundedElastic-5] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_bussiness-gateway-test applying filter {regexp=/bussiness-gateway-test/?(?<remaining>.*), replacement=/${remaining}} to RewritePath
2022-03-04 09:21:49.700 DEBUG 48002 --- [oundedElastic-1] o.s.c.g.filter.GatewayMetricsFilter      : New routes count: 3
2022-03-04 09:21:49.701 DEBUG 48002 --- [oundedElastic-5] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition matched: ReactiveCompositeDiscoveryClient_bussiness-gateway-test
2022-03-04 09:21:49.701 DEBUG 48002 --- [oundedElastic-5] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_microservice-test-consumer applying {pattern=/microservice-test-consumer/**} to Path
2022-03-04 09:21:49.702 DEBUG 48002 --- [oundedElastic-5] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_microservice-test-consumer applying filter {regexp=/microservice-test-consumer/?(?<remaining>.*), replacement=/${remaining}} to RewritePath
2022-03-04 09:21:49.703 DEBUG 48002 --- [oundedElastic-5] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition matched: ReactiveCompositeDiscoveryClient_microservice-test-consumer
2022-03-04 09:21:49.704 DEBUG 48002 --- [oundedElastic-5] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition consumer applying {_genkey_0=/api/auth/**} to Path
2022-03-04 09:21:49.705 DEBUG 48002 --- [oundedElastic-5] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition consumer applying filter {_genkey_0=2} to StripPrefix
2022-03-04 09:21:49.706 DEBUG 48002 --- [oundedElastic-5] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition matched: consumer
2022-03-04 09:22:19.707 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_bussiness-gateway-test applying {pattern=/bussiness-gateway-test/**} to Path
2022-03-04 09:22:19.707 DEBUG 48002 --- [oundedElastic-6] o.s.c.g.filter.GatewayMetricsFilter      : New routes count: 3
2022-03-04 09:22:19.708 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_bussiness-gateway-test applying filter {regexp=/bussiness-gateway-test/?(?<remaining>.*), replacement=/${remaining}} to RewritePath
2022-03-04 09:22:19.709 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition matched: ReactiveCompositeDiscoveryClient_bussiness-gateway-test
2022-03-04 09:22:19.709 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_microservice-test-consumer applying {pattern=/microservice-test-consumer/**} to Path
2022-03-04 09:22:19.711 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_microservice-test-consumer applying filter {regexp=/microservice-test-consumer/?(?<remaining>.*), replacement=/${remaining}} to RewritePath
2022-03-04 09:22:19.712 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition matched: ReactiveCompositeDiscoveryClient_microservice-test-consumer
2022-03-04 09:22:19.712 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition consumer applying {_genkey_0=/api/auth/**} to Path
2022-03-04 09:22:19.714 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition consumer applying filter {_genkey_0=2} to StripPrefix
2022-03-04 09:22:19.715 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition matched: consumer
2022-03-04 09:22:49.707 DEBUG 48002 --- [oundedElastic-1] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_bussiness-gateway-test applying {pattern=/bussiness-gateway-test/**} to Path
2022-03-04 09:22:49.707 DEBUG 48002 --- [oundedElastic-4] o.s.c.g.filter.GatewayMetricsFilter      : New routes count: 3
2022-03-04 09:22:49.708 DEBUG 48002 --- [oundedElastic-1] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_bussiness-gateway-test applying filter {regexp=/bussiness-gateway-test/?(?<remaining>.*), replacement=/${remaining}} to RewritePath
2022-03-04 09:22:49.710 DEBUG 48002 --- [oundedElastic-1] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition matched: ReactiveCompositeDiscoveryClient_bussiness-gateway-test
2022-03-04 09:22:49.711 DEBUG 48002 --- [oundedElastic-1] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_microservice-test-consumer applying {pattern=/microservice-test-consumer/**} to Path
2022-03-04 09:22:49.712 DEBUG 48002 --- [oundedElastic-1] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition ReactiveCompositeDiscoveryClient_microservice-test-consumer applying filter {regexp=/microservice-test-consumer/?(?<remaining>.*), replacement=/${remaining}} to RewritePath
2022-03-04 09:22:49.713 DEBUG 48002 --- [oundedElastic-1] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition matched: ReactiveCompositeDiscoveryClient_microservice-test-consumer
2022-03-04 09:22:49.714 DEBUG 48002 --- [oundedElastic-1] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition consumer applying {_genkey_0=/api/auth/**} to Path
2022-03-04 09:22:49.714 DEBUG 48002 --- [oundedElastic-1] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition consumer applying filter {_genkey_0=2} to StripPrefix
2022-03-04 09:22:49.715 DEBUG 48002 --- [oundedElastic-1] o.s.c.g.r.RouteDefinitionRouteLocator    : RouteDefinition matched: consumer
  • remove .withCaching() throw 503 error.
  • remove hint bean config success.

Sample
If possible, please provide a test case or sample application that reproduces
the problem. This makes it much easier for us to diagnose the problem and to verify that
we have fixed it.

@lin1005q
Copy link
Author

lin1005q commented Mar 4, 2022

#672

@lin1005q
Copy link
Author

lin1005q commented Mar 4, 2022

@OlgaMaciaszek

@OlgaMaciaszek
Copy link
Collaborator

Hello @lin1005q, please provide a minimal, complete, verifiable example that reproduces the issue.

@lin1005q
Copy link
Author

lin1005q commented Mar 7, 2022

@lin1005q
Copy link
Author

lin1005q commented Mar 7, 2022

@OlgaMaciaszek

@OlgaMaciaszek
Copy link
Collaborator

Hello @lin1005q - thanks for providing a sample. Will take a look tomorrow.

@OlgaMaciaszek
Copy link
Collaborator

Hello @lin1005q. This happens, because you've added the LB configuration bean to a class where your root application context is configured. As you can read in the docs, classes containing LB configuration beans should be passed as configuration argument of the @LoadBalancerClient annotation and they should not be annotated with @Configuration (or any meta-annotations that include it, such as @SpringBootApplication). This way, the beans will be created in specific child contexts, a different one for every load-balanced service. This change fixes the setup.

@lin1005q
Copy link
Author

lin1005q commented Mar 9, 2022

Thank you very much. How can it be set as the global default, which is automatically configured like xxx-spring-boot-starter. No need to manually add the @LoadBalancerClient annotation

@OlgaMaciaszek
Copy link
Collaborator

If you want to set a custom configuration, you need to use the annotation. If you want to have a default for many clients, you can use @LoadBalancerClients(defaultConfiguration= CustomConfig.class). Please read the docs - it's all described there.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants