Closed jbrwn closed 1 year ago
Connection validation is subject to the underlying driver. With the default allocation strategy, the pool retries acquisition of a connection one more time. If the subsequent connection validation also fails, you get to see the exception.
I think that a lot of connections within your pool are closed. You can configure the retry by setting the acquireRetry
property. Depending on your infrastructure, you might to check why these are closed.
Bug Report
Unsure if this its buggy behavior or just a configuration issue but I am getting a
io.r2dbc.spi.R2dbcNonTransientResourceException: Connection validation failed
exception if the pool is idle for more than a few minutes.Versions
Current Behavior
If my web app is idle for more than a ~2 minutes I end up getting a
io.r2dbc.spi.R2dbcNonTransientResourceException: Connection validation failed
on the next request. Kind of hard to figure out exactly what is going on as i can't produce locally :(. This only happens when i deploy my app to fly.io. My app is a fly.io v1 app and the postgres DB is fly.io postgres DB.Stack trace
``` 2023-03-18T00:52:32.178 app[048eed1f] den [info] 2023-03-18 00:52:32.176 [eventLoopGroupProxy-7-1] ERROR Application - Unhandled: GET - /dashboard 2023-03-18T00:52:32.178 app[048eed1f] den [info] java.lang.reflect.InvocationTargetException: null 2023-03-18T00:52:32.178 app[048eed1f] den [info] at jdk.internal.reflect.GeneratedMethodAccessor15.invoke(Unknown Source) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at java.base/java.lang.reflect.Method.invoke(Method.java:568) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:97) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Instance.call(CallerImpl.kt:113) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at kotlin.reflect.jvm.internal.KCallableImpl.call(KCallableImpl.kt:108) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at kotlin.reflect.jvm.internal.KCallableImpl.callDefaultMethod$kotlin_reflection(KCallableImpl.kt:159) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at kotlin.reflect.full.KCallables.callSuspendBy(KCallables.kt:74) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at dog.catfood.plugins.controllers.RouteProcessor.handleRoute(Controllers.kt:147) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at dog.catfood.plugins.controllers.RouteProcessor.access$handleRoute(Controllers.kt:121) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at dog.catfood.plugins.controllers.RouteProcessor$createRoute$1$1.invokeSuspend(Controllers.kt:126) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at dog.catfood.plugins.controllers.RouteProcessor$createRoute$1$1.invoke(Controllers.kt) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at dog.catfood.plugins.controllers.RouteProcessor$createRoute$1$1.invoke(Controllers.kt) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at io.ktor.server.routing.Route$buildPipeline$1$1.invokeSuspend(Route.kt:116) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at io.ktor.server.routing.Route$buildPipeline$1$1.invoke(Route.kt) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at io.ktor.server.routing.Route$buildPipeline$1$1.invoke(Route.kt) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:11) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:59) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:403) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at io.ktor.server.netty.EventLoopGroupProxy$Companion.create$lambda$1$lambda$0(NettyApplicationEngine.kt:291) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at java.base/java.lang.Thread.run(Thread.java:831) 2023-03-18T00:52:32.178 app[048eed1f] den [info] Caused by: org.jooq.exception.DataAccessException: SQL [TransactionSubscription]; Connection validation failed 2023-03-18T00:52:32.178 app[048eed1f] den [info] at org.jooq.impl.Tools.translate(Tools.java:3303) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at org.jooq.impl.Tools.translate(Tools.java:3287) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at org.jooq.impl.R2DBC$ConnectionSubscriber.onError(R2DBC.java:384) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at org.jooq.impl.Internal$1.onError(Internal.java:459) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.StrictSubscriber.onError(StrictSubscriber.java:106) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.FluxRetry$RetrySubscriber.onError(FluxRetry.java:95) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at io.r2dbc.pool.MonoDiscardOnCancel$MonoDiscardOnCancelSubscriber.onError(MonoDiscardOnCancel.java:98) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onError(MonoIgnoreThen.java:278) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:231) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:209) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:238) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.Operators.complete(Operators.java:137) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.Mono.subscribe(Mono.java:4444) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.Mono.subscribe(Mono.java:4444) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.Mono.subscribe(Mono.java:4444) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onError(MonoIgnoreThen.java:278) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onError(MonoIgnoreElements.java:84) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:200) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoSupplier$MonoSupplierSubscription.request(MonoSupplier.java:145) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.request(FluxHandleFuseable.java:259) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onSubscribe(MonoIgnoreElements.java:72) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onSubscribe(FluxHandleFuseable.java:163) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoSupplier.subscribe(MonoSupplier.java:48) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.Mono.subscribe(Mono.java:4444) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at io.r2dbc.pool.MonoDiscardOnCancel.subscribe(MonoDiscardOnCancel.java:50) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.pool.AbstractPool$Borrower.deliver(AbstractPool.java:467) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.pool.SimpleDequePool.lambda$drainLoop$8(SimpleDequePool.java:368) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.scheduler.ImmediateScheduler.schedule(ImmediateScheduler.java:52) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.pool.SimpleDequePool.drainLoop(SimpleDequePool.java:368) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.pool.SimpleDequePool.pendingOffer(SimpleDequePool.java:598) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.pool.SimpleDequePool.doAcquire(SimpleDequePool.java:294) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.pool.AbstractPool$Borrower.request(AbstractPool.java:430) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoFlatMap$FlatMapMain.request(MonoFlatMap.java:194) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2304) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2178) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoFlatMap$FlatMapMain.onSubscribe(MonoFlatMap.java:117) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.pool.SimpleDequePool$QueueBorrowerMono.subscribe(SimpleDequePool.java:716) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.FluxRetry$RetrySubscriber.resubscribe(FluxRetry.java:117) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.MonoRetry.subscribeOrReturn(MonoRetry.java:50) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.Mono.subscribe(Mono.java:4429) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at org.jooq.impl.R2DBC$AbstractNonBlockingSubscription.request0(R2DBC.java:565) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at org.jooq.impl.ThreadGuard.lambda$run$0(ThreadGuard.java:74) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at org.jooq.impl.ThreadGuard.run(ThreadGuard.java:87) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at org.jooq.impl.ThreadGuard.run(ThreadGuard.java:74) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at org.jooq.impl.R2DBC$AbstractSubscription.request(R2DBC.java:182) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt$awaitOne$2$1$onSubscribe$3.invoke(Await.kt:213) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt$awaitOne$2$1$onSubscribe$3.invoke(Await.kt:212) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt$awaitOne$2$1.withSubscriptionLock(Await.kt:310) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt$awaitOne$2$1.onSubscribe(Await.kt:212) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at org.jooq.impl.DefaultDSLContext.lambda$transactionPublisher$10(DefaultDSLContext.java:657) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt.awaitOne(Await.kt:190) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt.awaitOne$default(Await.kt:183) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt.awaitFirstOrNull(Await.kt:45) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at org.jooq.kotlin.coroutines.CoroutineExtensionsKt.transactionCoroutine(CoroutineExtensions.kt:18) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at dog.catfood.dao.DeviceDao.getDevices(DeviceDao.kt:42) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at dog.catfood.logic.DeviceService.getDevices(DeviceService.kt:11) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at dog.catfood.controllers.DashboardController.index(DashboardController.kt:19) 2023-03-18T00:52:32.178 app[048eed1f] den [info] ... 30 common frames omitted 2023-03-18T00:52:32.178 app[048eed1f] den [info] Caused by: io.r2dbc.spi.R2dbcNonTransientResourceException: Connection validation failed 2023-03-18T00:52:32.178 app[048eed1f] den [info] at io.r2dbc.pool.Validation.lambda$validate$2(Validation.java:45) 2023-03-18T00:52:32.178 app[048eed1f] den [info] at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:178) 2023-03-18T00:52:32.178 app[048eed1f] den [info] ... 75 common frames omitted 2023-03-18T00:52:32.179 app[048eed1f] den [info] 2023-03-18 00:52:32.178 [eventLoopGroupProxy-7-1] INFO Application - 500 Internal Server Error: GET - /dashboard in 15ms 2023-03-18T00:52:33.097 app[048eed1f] den [info] 2023-03-18 00:52:33.092 [eventLoopGroupProxy-7-1] ERROR Application - Unhandled: GET - /dashboard 2023-03-18T00:52:33.097 app[048eed1f] den [info] java.lang.reflect.InvocationTargetException: null 2023-03-18T00:52:33.097 app[048eed1f] den [info] at jdk.internal.reflect.GeneratedMethodAccessor15.invoke(Unknown Source) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at java.base/java.lang.reflect.Method.invoke(Method.java:568) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:97) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Instance.call(CallerImpl.kt:113) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at kotlin.reflect.jvm.internal.KCallableImpl.call(KCallableImpl.kt:108) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at kotlin.reflect.jvm.internal.KCallableImpl.callDefaultMethod$kotlin_reflection(KCallableImpl.kt:159) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at kotlin.reflect.full.KCallables.callSuspendBy(KCallables.kt:74) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at dog.catfood.plugins.controllers.RouteProcessor.handleRoute(Controllers.kt:147) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at dog.catfood.plugins.controllers.RouteProcessor.access$handleRoute(Controllers.kt:121) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at dog.catfood.plugins.controllers.RouteProcessor$createRoute$1$1.invokeSuspend(Controllers.kt:126) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at dog.catfood.plugins.controllers.RouteProcessor$createRoute$1$1.invoke(Controllers.kt) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at dog.catfood.plugins.controllers.RouteProcessor$createRoute$1$1.invoke(Controllers.kt) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at io.ktor.server.routing.Route$buildPipeline$1$1.invokeSuspend(Route.kt:116) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at io.ktor.server.routing.Route$buildPipeline$1$1.invoke(Route.kt) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at io.ktor.server.routing.Route$buildPipeline$1$1.invoke(Route.kt) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:11) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:59) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:403) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at io.ktor.server.netty.EventLoopGroupProxy$Companion.create$lambda$1$lambda$0(NettyApplicationEngine.kt:291) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at java.base/java.lang.Thread.run(Thread.java:831) 2023-03-18T00:52:33.097 app[048eed1f] den [info] Caused by: org.jooq.exception.DataAccessException: SQL [TransactionSubscription]; Connection validation failed 2023-03-18T00:52:33.097 app[048eed1f] den [info] at org.jooq.impl.Tools.translate(Tools.java:3303) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at org.jooq.impl.Tools.translate(Tools.java:3287) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at org.jooq.impl.R2DBC$ConnectionSubscriber.onError(R2DBC.java:384) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at org.jooq.impl.Internal$1.onError(Internal.java:459) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.StrictSubscriber.onError(StrictSubscriber.java:106) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.FluxRetry$RetrySubscriber.onError(FluxRetry.java:95) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at io.r2dbc.pool.MonoDiscardOnCancel$MonoDiscardOnCancelSubscriber.onError(MonoDiscardOnCancel.java:98) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onError(MonoIgnoreThen.java:278) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:231) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:209) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:238) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.Operators.complete(Operators.java:137) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.Mono.subscribe(Mono.java:4444) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.Mono.subscribe(Mono.java:4444) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) 2023-03-18T00:52:33.097 app[048eed1f] den [info] at reactor.core.publisher.Mono.subscribe(Mono.java:4444) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onError(MonoIgnoreThen.java:278) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onError(MonoIgnoreElements.java:84) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:200) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.MonoSupplier$MonoSupplierSubscription.request(MonoSupplier.java:145) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.request(FluxHandleFuseable.java:259) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onSubscribe(MonoIgnoreElements.java:72) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onSubscribe(FluxHandleFuseable.java:163) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.MonoSupplier.subscribe(MonoSupplier.java:48) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.Mono.subscribe(Mono.java:4444) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at io.r2dbc.pool.MonoDiscardOnCancel.subscribe(MonoDiscardOnCancel.java:50) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.pool.AbstractPool$Borrower.deliver(AbstractPool.java:467) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.pool.SimpleDequePool.lambda$drainLoop$8(SimpleDequePool.java:368) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.scheduler.ImmediateScheduler.schedule(ImmediateScheduler.java:52) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.pool.SimpleDequePool.drainLoop(SimpleDequePool.java:368) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.pool.SimpleDequePool.pendingOffer(SimpleDequePool.java:598) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.pool.SimpleDequePool.doAcquire(SimpleDequePool.java:294) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.pool.AbstractPool$Borrower.request(AbstractPool.java:430) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.MonoFlatMap$FlatMapMain.request(MonoFlatMap.java:194) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2304) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2178) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.MonoFlatMap$FlatMapMain.onSubscribe(MonoFlatMap.java:117) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.pool.SimpleDequePool$QueueBorrowerMono.subscribe(SimpleDequePool.java:716) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.FluxRetry$RetrySubscriber.resubscribe(FluxRetry.java:117) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.MonoRetry.subscribeOrReturn(MonoRetry.java:50) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.Mono.subscribe(Mono.java:4429) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at org.jooq.impl.R2DBC$AbstractNonBlockingSubscription.request0(R2DBC.java:565) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at org.jooq.impl.ThreadGuard.lambda$run$0(ThreadGuard.java:74) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at org.jooq.impl.ThreadGuard.run(ThreadGuard.java:87) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at org.jooq.impl.ThreadGuard.run(ThreadGuard.java:74) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at org.jooq.impl.R2DBC$AbstractSubscription.request(R2DBC.java:182) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt$awaitOne$2$1$onSubscribe$3.invoke(Await.kt:213) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt$awaitOne$2$1$onSubscribe$3.invoke(Await.kt:212) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt$awaitOne$2$1.withSubscriptionLock(Await.kt:310) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt$awaitOne$2$1.onSubscribe(Await.kt:212) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at org.jooq.impl.DefaultDSLContext.lambda$transactionPublisher$10(DefaultDSLContext.java:657) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt.awaitOne(Await.kt:190) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt.awaitOne$default(Await.kt:183) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt.awaitFirstOrNull(Await.kt:45) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at org.jooq.kotlin.coroutines.CoroutineExtensionsKt.transactionCoroutine(CoroutineExtensions.kt:18) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at dog.catfood.dao.DeviceDao.getDevices(DeviceDao.kt:42) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at dog.catfood.logic.DeviceService.getDevices(DeviceService.kt:11) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at dog.catfood.controllers.DashboardController.index(DashboardController.kt:19) 2023-03-18T00:52:33.098 app[048eed1f] den [info] ... 30 common frames omitted 2023-03-18T00:52:33.098 app[048eed1f] den [info] Caused by: io.r2dbc.spi.R2dbcNonTransientResourceException: Connection validation failed 2023-03-18T00:52:33.098 app[048eed1f] den [info] at io.r2dbc.pool.Validation.lambda$validate$2(Validation.java:45) 2023-03-18T00:52:33.098 app[048eed1f] den [info] at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:178) 2023-03-18T00:52:33.098 app[048eed1f] den [info] ... 75 common frames omitted 2023-03-18T00:52:33.098 app[048eed1f] den [info] 2023-03-18 00:52:33.097 [eventLoopGroupProxy-7-1] INFO Application - 500 Internal Server Error: GET - /dashboard in 27ms 2023-03-18T00:52:34.079 app[048eed1f] den [info] 2023-03-18 00:52:34.078 [eventLoopGroupProxy-7-1] INFO Application - 200 OK: GET - /dashboard in 90ms 2023-03-18T00:52:34.227 app[048eed1f] den [info] 2023-03-18 00:52:34.226 [eventLoopGroupProxy-7-1] INFO Application - 200 OK: GET - /assets/css/pico.min.css in 7ms 2023-03-18T00:52:34.228 app[048eed1f] den [info] 2023-03-18 00:52:34.227 [eventLoopGroupProxy-7-1] INFO Application - 200 OK: GET - /assets/css/custom.css in 0ms 2023-03-18T00:53:11.444 app[048eed1f] den [info] 2023-03-18 00:53:11.444 [eventLoopGroupProxy-7-1] INFO Application - 200 OK: GET - /dashboard in 71ms 2023-03-18T00:53:11.576 app[048eed1f] den [info] 2023-03-18 00:53:11.575 [eventLoopGroupProxy-7-1] INFO Application - 200 OK: GET - /assets/css/pico.min.css in 3ms 2023-03-18T00:53:11.586 app[048eed1f] den [info] 2023-03-18 00:53:11.585 [eventLoopGroupProxy-7-1] INFO Application - 200 OK: GET - /assets/css/custom.css in 8ms 2023-03-18T00:54:10.251 app[048eed1f] den [info] 2023-03-18 00:54:10.250 [eventLoopGroupProxy-7-1] INFO Application - 200 OK: GET - /dashboard in 56ms 2023-03-18T00:54:10.393 app[048eed1f] den [info] 2023-03-18 00:54:10.392 [eventLoopGroupProxy-7-1] INFO Application - 200 OK: GET - /assets/css/pico.min.css in 9ms 2023-03-18T00:54:10.395 app[048eed1f] den [info] 2023-03-18 00:54:10.395 [eventLoopGroupProxy-7-1] INFO Application - 200 OK: GET - /assets/css/custom.css in 2ms 2023-03-18T00:54:25.587 app[048eed1f] den [info] 2023-03-18 00:54:25.586 [eventLoopGroupProxy-7-1] INFO Application - 200 OK: GET - /dashboard in 52ms 2023-03-18T00:54:25.727 app[048eed1f] den [info] 2023-03-18 00:54:25.726 [eventLoopGroupProxy-7-1] INFO Application - 200 OK: GET - /assets/css/pico.min.css in 4ms 2023-03-18T00:54:25.735 app[048eed1f] den [info] 2023-03-18 00:54:25.735 [eventLoopGroupProxy-7-1] INFO Application - 200 OK: GET - /assets/css/custom.css in 2ms 2023-03-18T00:56:29.767 app[048eed1f] den [info] 2023-03-18 00:56:29.766 [eventLoopGroupProxy-7-1] ERROR Application - Unhandled: GET - /dashboard 2023-03-18T00:56:29.767 app[048eed1f] den [info] java.lang.reflect.InvocationTargetException: null 2023-03-18T00:56:29.767 app[048eed1f] den [info] at jdk.internal.reflect.GeneratedMethodAccessor15.invoke(Unknown Source) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at java.base/java.lang.reflect.Method.invoke(Method.java:568) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at kotlin.reflect.jvm.internal.calls.CallerImpl$Method.callMethod(CallerImpl.kt:97) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at kotlin.reflect.jvm.internal.calls.CallerImpl$Method$Instance.call(CallerImpl.kt:113) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at kotlin.reflect.jvm.internal.KCallableImpl.call(KCallableImpl.kt:108) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at kotlin.reflect.jvm.internal.KCallableImpl.callDefaultMethod$kotlin_reflection(KCallableImpl.kt:159) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at kotlin.reflect.full.KCallables.callSuspendBy(KCallables.kt:74) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at dog.catfood.plugins.controllers.RouteProcessor.handleRoute(Controllers.kt:147) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at dog.catfood.plugins.controllers.RouteProcessor.access$handleRoute(Controllers.kt:121) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at dog.catfood.plugins.controllers.RouteProcessor$createRoute$1$1.invokeSuspend(Controllers.kt:126) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at dog.catfood.plugins.controllers.RouteProcessor$createRoute$1$1.invoke(Controllers.kt) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at dog.catfood.plugins.controllers.RouteProcessor$createRoute$1$1.invoke(Controllers.kt) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at io.ktor.server.routing.Route$buildPipeline$1$1.invokeSuspend(Route.kt:116) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at io.ktor.server.routing.Route$buildPipeline$1$1.invoke(Route.kt) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at io.ktor.server.routing.Route$buildPipeline$1$1.invoke(Route.kt) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:120) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:11) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:59) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:403) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) 2023-03-18T00:56:29.767 app[048eed1f] den [info] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at io.ktor.server.netty.EventLoopGroupProxy$Companion.create$lambda$1$lambda$0(NettyApplicationEngine.kt:291) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at java.base/java.lang.Thread.run(Thread.java:831) 2023-03-18T00:56:29.768 app[048eed1f] den [info] Caused by: org.jooq.exception.DataAccessException: SQL [TransactionSubscription]; Connection validation failed 2023-03-18T00:56:29.768 app[048eed1f] den [info] at org.jooq.impl.Tools.translate(Tools.java:3303) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at org.jooq.impl.Tools.translate(Tools.java:3287) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at org.jooq.impl.R2DBC$ConnectionSubscriber.onError(R2DBC.java:384) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at org.jooq.impl.Internal$1.onError(Internal.java:459) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.StrictSubscriber.onError(StrictSubscriber.java:106) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.FluxRetry$RetrySubscriber.onError(FluxRetry.java:95) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:241) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:315) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at io.r2dbc.pool.MonoDiscardOnCancel$MonoDiscardOnCancelSubscriber.onError(MonoDiscardOnCancel.java:98) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onError(MonoIgnoreThen.java:278) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:231) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:209) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:238) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.Operators.complete(Operators.java:137) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoEmpty.subscribe(MonoEmpty.java:46) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.Mono.subscribe(Mono.java:4444) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.Mono.subscribe(Mono.java:4444) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.Mono.subscribe(Mono.java:4444) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onError(MonoIgnoreThen.java:278) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onError(MonoIgnoreElements.java:84) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:200) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoSupplier$MonoSupplierSubscription.request(MonoSupplier.java:145) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.request(FluxHandleFuseable.java:259) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreElements$IgnoreElementsSubscriber.onSubscribe(MonoIgnoreElements.java:72) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onSubscribe(FluxHandleFuseable.java:163) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoSupplier.subscribe(MonoSupplier.java:48) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.Mono.subscribe(Mono.java:4444) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:263) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at io.r2dbc.pool.MonoDiscardOnCancel.subscribe(MonoDiscardOnCancel.java:50) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.pool.AbstractPool$Borrower.deliver(AbstractPool.java:467) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.pool.SimpleDequePool.lambda$drainLoop$8(SimpleDequePool.java:368) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.scheduler.ImmediateScheduler.schedule(ImmediateScheduler.java:52) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.pool.SimpleDequePool.drainLoop(SimpleDequePool.java:368) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.pool.SimpleDequePool.pendingOffer(SimpleDequePool.java:598) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.pool.SimpleDequePool.doAcquire(SimpleDequePool.java:294) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.pool.AbstractPool$Borrower.request(AbstractPool.java:430) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoFlatMap$FlatMapMain.request(MonoFlatMap.java:194) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2304) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2178) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoFlatMap$FlatMapMain.onSubscribe(MonoFlatMap.java:117) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.pool.SimpleDequePool$QueueBorrowerMono.subscribe(SimpleDequePool.java:716) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:64) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:52) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.FluxRetry$RetrySubscriber.resubscribe(FluxRetry.java:117) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.MonoRetry.subscribeOrReturn(MonoRetry.java:50) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at reactor.core.publisher.Mono.subscribe(Mono.java:4429) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at org.jooq.impl.R2DBC$AbstractNonBlockingSubscription.request0(R2DBC.java:565) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at org.jooq.impl.ThreadGuard.lambda$run$0(ThreadGuard.java:74) 2023-03-18T00:56:29.768 app[048eed1f] den [info] at org.jooq.impl.ThreadGuard.run(ThreadGuard.java:87) 2023-03-18T00:56:29.773 app[048eed1f] den [info] at org.jooq.impl.ThreadGuard.run(ThreadGuard.java:74) 2023-03-18T00:56:29.773 app[048eed1f] den [info] at org.jooq.impl.R2DBC$AbstractSubscription.request(R2DBC.java:182) 2023-03-18T00:56:29.773 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt$awaitOne$2$1$onSubscribe$3.invoke(Await.kt:213) 2023-03-18T00:56:29.773 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt$awaitOne$2$1$onSubscribe$3.invoke(Await.kt:212) 2023-03-18T00:56:29.773 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt$awaitOne$2$1.withSubscriptionLock(Await.kt:310) 2023-03-18T00:56:29.773 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt$awaitOne$2$1.onSubscribe(Await.kt:212) 2023-03-18T00:56:29.773 app[048eed1f] den [info] at org.jooq.impl.DefaultDSLContext.lambda$transactionPublisher$10(DefaultDSLContext.java:657) 2023-03-18T00:56:29.773 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt.awaitOne(Await.kt:190) 2023-03-18T00:56:29.773 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt.awaitOne$default(Await.kt:183) 2023-03-18T00:56:29.773 app[048eed1f] den [info] at kotlinx.coroutines.reactive.AwaitKt.awaitFirstOrNull(Await.kt:45) 2023-03-18T00:56:29.773 app[048eed1f] den [info] at org.jooq.kotlin.coroutines.CoroutineExtensionsKt.transactionCoroutine(CoroutineExtensions.kt:18) 2023-03-18T00:56:29.773 app[048eed1f] den [info] at dog.catfood.dao.DeviceDao.getDevices(DeviceDao.kt:42) 2023-03-18T00:56:29.773 app[048eed1f] den [info] at dog.catfood.logic.DeviceService.getDevices(DeviceService.kt:11) 2023-03-18T00:56:29.773 app[048eed1f] den [info] at dog.catfood.controllers.DashboardController.index(DashboardController.kt:19) 2023-03-18T00:56:29.773 app[048eed1f] den [info] ... 30 common frames omitted 2023-03-18T00:56:29.773 app[048eed1f] den [info] Caused by: io.r2dbc.spi.R2dbcNonTransientResourceException: Connection validation failed 2023-03-18T00:56:29.773 app[048eed1f] den [info] at io.r2dbc.pool.Validation.lambda$validate$2(Validation.java:45) 2023-03-18T00:56:29.773 app[048eed1f] den [info] at reactor.core.publisher.FluxHandleFuseable$HandleFuseableSubscriber.onNext(FluxHandleFuseable.java:178) 2023-03-18T00:56:29.773 app[048eed1f] den [info] ... 75 common frames omitted 2023-03-18T00:56:29.774 app[048eed1f] den [info] 2023-03-18 00:56:29.773 [eventLoopGroupProxy-7-1] INFO Application - 500 Internal Server Error: GET - /dashboard in 22ms ```Table schema
Input Code
```sql -- your SQL here; ```Steps to reproduce
Input Code
```java // your code here; ```Expected behavior/code
Possible Solution
Additional context
I am using r2dbc with ktor and jooq.
My pool configuration is pretty straightforward. Basically just using the default: