You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi,
I have two OAuth2 clients configured, one for user login, one for application login using the client-credentials flow. Both use the same OpenID issuer URL (same behaviour though if they are different).
When calling a protected endpoint, I often get errors as shown below.
I have seen that the HTTP communication with the ID provider is started in HttpClientJwksClient::load for both client configurations.
The operation is done without errors but the exception logged at error level is a little annoying.
Do you think it might be possible to explicitly catch that exception?
The usage of Hooks.onErrorDroppedshould also work.
Regards
Operator called default onErrorDropped
java.util.concurrent.CompletionException: java.util.concurrent.CancellationException: Request cancelled
at java.base/java.util.concurrent.CompletableFuture.encodeRelay(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture.completeRelay(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture$UniComposeExceptionally.tryFire(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture.postComplete(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(Unknown Source)
at java.net.http/jdk.internal.net.http.Http1Exchange.lambda$cancelImpl$9(Unknown Source)
at java.net.http/jdk.internal.net.http.Http1Exchange.runInline(Unknown Source)
at java.net.http/jdk.internal.net.http.Http1Exchange.cancelImpl(Unknown Source)
at java.net.http/jdk.internal.net.http.Http1Exchange.cancel(Unknown Source)
at java.net.http/jdk.internal.net.http.Exchange.cancel(Unknown Source)
at java.net.http/jdk.internal.net.http.MultiExchange.cancel(Unknown Source)
at java.net.http/jdk.internal.net.http.MultiExchange$CancelableRef.cancel(Unknown Source)
at java.net.http/jdk.internal.net.http.common.MinimalFuture.cancel(Unknown Source)
at reactor.core.publisher.MonoCompletionStage$MonoCompletionStageSubscription.cancel(MonoCompletionStage.java:156)
at reactor.core.publisher.Operators.terminate(Operators.java:1329)
at reactor.core.publisher.FluxFlatMap$FlatMapInner.cancel(FluxFlatMap.java:1026)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.unsubscribeEntry(FluxFlatMap.java:342)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.unsubscribeEntry(FluxFlatMap.java:221)
at reactor.core.publisher.FlatMapTracker.unsubscribe(FluxFlatMap.java:1087)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.cancel(FluxFlatMap.java:362)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.drainLoop(Operators.java:2424)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.drain(Operators.java:2392)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.cancel(Operators.java:2204)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.drainLoop(Operators.java:2424)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.drain(Operators.java:2392)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.cancel(Operators.java:2204)
at reactor.core.publisher.FluxHandle$HandleSubscriber.cancel(FluxHandle.java:277)
at reactor.core.publisher.MonoNext$NextSubscriber.cancel(MonoNext.java:114)
at reactor.core.publisher.FluxMap$MapSubscriber.cancel(FluxMap.java:169)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.drainLoop(Operators.java:2424)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.drain(Operators.java:2392)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.cancel(Operators.java:2204)
at reactor.core.publisher.FluxMap$MapSubscriber.cancel(FluxMap.java:169)
at reactor.core.publisher.MonoNext$NextSubscriber.cancel(MonoNext.java:114)
at reactor.core.publisher.MonoNext$NextSubscriber.cancel(MonoNext.java:114)
at reactor.core.publisher.FluxMap$MapSubscriber.cancel(FluxMap.java:169)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.drainLoop(Operators.java:2424)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.drain(Operators.java:2392)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.cancel(Operators.java:2204)
at reactor.core.publisher.MonoFlatMap$FlatMapMain.cancel(MonoFlatMap.java:199)
at reactor.core.publisher.FluxMap$MapSubscriber.cancel(FluxMap.java:169)
at reactor.core.publisher.MonoNext$NextSubscriber.cancel(MonoNext.java:114)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.drainLoop(Operators.java:2424)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.drain(Operators.java:2392)
at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.cancel(Operators.java:2204)
at reactor.core.publisher.FluxHandle$HandleSubscriber.cancel(FluxHandle.java:277)
at reactor.core.publisher.Operators$BaseFluxToMonoOperator.cancel(Operators.java:2085)
at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.cancel(FluxDefaultIfEmpty.java:103)
at reactor.core.publisher.FluxMap$MapSubscriber.cancel(FluxMap.java:169)
at reactor.core.publisher.MonoCacheInvalidateIf$CoordinatorSubscriber.remove(MonoCacheInvalidateIf.java:275)
at reactor.core.publisher.MonoCacheInvalidateIf$CacheMonoSubscriber.cancel(MonoCacheInvalidateIf.java:394)
at reactor.core.publisher.FluxMap$MapSubscriber.cancel(FluxMap.java:169)
at reactor.core.publisher.FluxMap$MapSubscriber.cancel(FluxMap.java:169)
at reactor.core.publisher.Operators.terminate(Operators.java:1329)
at reactor.core.publisher.FluxFlatMap$FlatMapInner.cancel(FluxFlatMap.java:1026)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.unsubscribeEntry(FluxFlatMap.java:342)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.unsubscribeEntry(FluxFlatMap.java:221)
at reactor.core.publisher.FlatMapTracker.unsubscribe(FluxFlatMap.java:1087)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.checkTerminated(FluxFlatMap.java:815)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:612)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.tryEmit(FluxFlatMap.java:573)
at reactor.core.publisher.FluxFlatMap$FlatMapInner.onNext(FluxFlatMap.java:988)
at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)
at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122)
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1864)
at reactor.core.publisher.MonoCacheInvalidateIf.subscribeOrReturn(MonoCacheInvalidateIf.java:170)
at reactor.core.publisher.Mono.subscribe(Mono.java:4560)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430)
at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:335)
at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:294)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373)
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201)
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83)
at reactor.core.publisher.Mono.subscribe(Mono.java:4576)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430)
at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:335)
at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:294)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373)
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201)
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83)
at reactor.core.publisher.Mono.subscribe(Mono.java:4576)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430)
at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:335)
at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:294)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373)
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201)
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83)
at reactor.core.publisher.Flux.subscribe(Flux.java:8891)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:430)
at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:335)
at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:294)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:373)
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:201)
at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:83)
at reactor.core.publisher.Mono.subscribe(Mono.java:4576)
at io.micronaut.core.async.propagation.ReactivePropagation$1.subscribe(ReactivePropagation.java:72)
at io.micronaut.core.async.propagation.ReactivePropagation$1.subscribe(ReactivePropagation.java:79)
at reactor.core.publisher.MonoFromPublisher.subscribe(MonoFromPublisher.java:64)
at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76)
at io.micronaut.http.reactive.execution.ReactorExecutionFlowImpl.onComplete(ReactorExecutionFlowImpl.java:235)
at io.micronaut.http.server.netty.NettyRequestLifecycle.handleNormal(NettyRequestLifecycle.java:107)
at io.micronaut.http.server.netty.RoutingInBoundHandler.accept(RoutingInBoundHandler.java:205)
at io.micronaut.http.server.netty.handler.PipeliningServerHandler$MessageInboundHandler.read(PipeliningServerHandler.java:446)
at io.micronaut.http.server.netty.handler.PipeliningServerHandler.channelRead(PipeliningServerHandler.java:228)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:434)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318)
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:249)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:355)
at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:293)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:355)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1429)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:918)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:167)
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.handle(AbstractNioChannel.java:445)
at io.netty.channel.nio.NioIoHandler$DefaultNioRegistration.handle(NioIoHandler.java:381)
at io.netty.channel.nio.NioIoHandler.processSelectedKey(NioIoHandler.java:575)
at io.netty.channel.nio.NioIoHandler.processSelectedKeysOptimized(NioIoHandler.java:550)
at io.netty.channel.nio.NioIoHandler.processSelectedKeys(NioIoHandler.java:491)
at io.netty.channel.nio.NioIoHandler.run(NioIoHandler.java:468)
at io.netty.channel.SingleThreadIoEventLoop.runIo(SingleThreadIoEventLoop.java:206)
at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:177)
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073)
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(Unknown Source)
Caused by: java.util.concurrent.CancellationException: Request cancelled
... 117 more
Caused by: java.io.IOException: Request cancelled
at java.net.http/jdk.internal.net.http.Http1Exchange.cancel(Unknown Source)
at java.net.http/jdk.internal.net.http.Exchange.cancel(Unknown Source)
... 117 more
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
Hi,
I have two OAuth2 clients configured, one for user login, one for application login using the client-credentials flow. Both use the same OpenID issuer URL (same behaviour though if they are different).
When calling a protected endpoint, I often get errors as shown below.
I have seen that the HTTP communication with the ID provider is started in
HttpClientJwksClient::loadfor both client configurations.The operation is done without errors but the exception logged at error level is a little annoying.
Do you think it might be possible to explicitly catch that exception?
The usage of
Hooks.onErrorDroppedshould also work.Regards
Beta Was this translation helpful? Give feedback.
All reactions