Java 如何修复ktor kotlin web框架上的内存泄漏
嗨,我在kubernetes上运行ktor web服务器。当服务器实例启动时,它使用250-300 MB,但在运行几个小时后,内存使用增加到600MB,并且我已经将该服务器重启后的限制设置为600MB,因为OOM。为了在内存为500+时进行测试,我停止了所有服务器通信,并生成下面附加的堆转储。但问题是在等待数小时后,内存保持在500+MB。我认为应该恢复到正常的200-300MB。抱歉,我不擅长检查堆转储中的问题。你能检查一下并告诉我哪里有问题吗?谢谢 堆转储摘要 全转储链路 这里有几个线程转储Java 如何修复ktor kotlin web框架上的内存泄漏,java,jvm,visualvm,heap-dump,ktor,Java,Jvm,Visualvm,Heap Dump,Ktor,嗨,我在kubernetes上运行ktor web服务器。当服务器实例启动时,它使用250-300 MB,但在运行几个小时后,内存使用增加到600MB,并且我已经将该服务器重启后的限制设置为600MB,因为OOM。为了在内存为500+时进行测试,我停止了所有服务器通信,并生成下面附加的堆转储。但问题是在等待数小时后,内存保持在500+MB。我认为应该恢复到正常的200-300MB。抱歉,我不擅长检查堆转储中的问题。你能检查一下并告诉我哪里有问题吗?谢谢 堆转储摘要 全转储链路 这里有几个线程转
“主”优先级=5 tid=1定时\u等待
位于jdk.internal.misc.Unsafe.park(本机方法)
位于java.util.concurrent.locks.LockSupport.parknos()处
在kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:82)
在kotlinx.coroutines.BuildersKt\uuu BuildersKt.runBlocking(Builders.kt:54)
局部变量:kotlinx.coroutines.BlockingCoroutine#1
局部变量:kotlinx.coroutines.BlockingEventLoop#1
在kotlinx.coroutines.BuildersKt.runBlocking(:1)
在kotlinx.coroutines.BuildersKt\uuu BuildersKt.runBlocking$default(Builders.kt:36)
局部变量:kotlin.coroutines.EmptyCoroutineContext#1
在kotlinx.coroutines.BuildersKt.runBlocking$default(:1)
局部变量:io.ktor.server.cio.CIOApplicationEngine$start$2#1
在io.ktor.server.cio.CIOApplicationEngine.start(CIOApplicationEngine.kt:95)
局部变量:io.ktor.server.cio.CIOApplicationEngine#1
在com.example.myapp.ApplicationKt.main上(Application.kt:39)
局部变量:java.lang.String[]#33
局部变量:io.ktor.server.engine.ApplicationEngineEnvironment重新加载#1
“引用处理程序”守护程序prio=10 tid=2 RUNNABLE
位于java.lang.ref.Reference.waitForReferencePendingList(本机方法)
在java.lang.ref.Reference.processPendingReferences()中
在java.lang.ref.Reference$ReferenceHandler.run()处
“终结器”守护程序prio=8 tid=3正在等待
在java.lang.Object.wait(本机方法)
在java.lang.ref.ReferenceQueue.remove()处
局部变量:java.lang.ref.ReferenceQueue$Lock#57
在java.lang.ref.ReferenceQueue.remove()处
局部变量:java.lang.ref.ReferenceQueue#54
在java.lang.ref.Finalizer$FinalizerThread.run()处
局部变量:java.lang.System$2#1
“信号调度器”守护进程prio=9 tid=4 RUNNABLE
“通用清理器”守护程序prio=8 tid=9定时\u等待
在java.lang.Object.wait(本机方法)
在java.lang.ref.ReferenceQueue.remove()处
局部变量:java.lang.ref.ReferenceQueue$Lock#58
局部变量:java.lang.ref.ReferenceQueue#55
在jdk.internal.ref.CleanerImpl.run()处
局部变量:jdk.internal.ref.CleanerImpl#1
在java.lang.Thread.run()处
在jdk.internal.misc.InnocuousThread.run()处
“DefaultDispatcher-worker-1”守护进程prio=5 tid=10 TIMED_等待
位于jdk.internal.misc.Unsafe.park(本机方法)
位于java.util.concurrent.locks.LockSupport.parknos()处
在kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.park(CoroutineScheduler.kt:783)
在kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.tryPark(CoroutineScheduler.kt:728)
在kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:711)
在kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
“DefaultDispatcher-worker-2”守护程序prio=5 tid=11 TIMED_等待
位于jdk.internal.misc.Unsafe.park(本机方法)
位于java.util.concurrent.locks.LockSupport.parknos()处
在kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.park(CoroutineScheduler.kt:783)
在kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.tryPark(CoroutineScheduler.kt:728)
在kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:711)
在kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
“DefaultDispatcher-worker-3”守护进程优先级=5 tid=12可运行
at sun.nio.ch.EPoll.wait(本机方法)
在sun.nio.ch.EPollSelectorImpl.doSelect()上
在sun.nio.ch.SelectorImpl.lock和doselect()上
局部变量:sun.nio.ch.EPollSelectorImpl#1
局部变量:sun.nio.ch.Util$2#1
在sun.nio.ch.SelectorImpl.select()中
在io.ktor.network.selector.ActorSelectorManager.select(ActorSelectorManager.kt:97)中
局部变量:io.ktor.network.selector.ActorSelectorManager#1
在io.ktor.network.selector.ActorSelectorManager$select$1.invokeSuspend(ActorSelectorManager.kt)
位于kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
局部变量:io.ktor.network.selector.ActorSelectorManager$process$1#1
局部变量:io.ktor.network.selector.ActorSelectorManager$select$1#1
在kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
局部变量:kotlin.coroutines.CombinedContext#5
局部变量:kotlinx.coroutines.DispatchedContinuation#2249
在kotlinx.coroutines.scheduling.CoroutineScheduler.runsafe(CoroutineScheduler.kt:571)
在kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:738)
在kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
在kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
“mysql cj放弃连接清理”守护程序prio=5 tid=14 TIMED_WAITING
在java.lang.Object.wait(本机方法)
在java.lang.ref.ReferenceQueue.remove()处
局部变量:java.lang.ref.ReferenceQueue$Lock#151
局部变量:java.lang.ref.ReferenceQueue#148
在com.mysql.cj.jdbc.放弃连接CleanupThread.run(放弃连接CleanupThread.java:85)
位于java.util.concurrent.ThreadPoolExecutor.runWorker()处
局部变量:com.mysql.cj.jdbc.ForwardedConnectionCleanupThread#1
局部变量:java.util。
"main" prio=5 tid=1 TIMED_WAITING
at jdk.internal.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.parkNanos(<unknown string>)
at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:82)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:54)
local variable: kotlinx.coroutines.BlockingCoroutine#1
local variable: kotlinx.coroutines.BlockingEventLoop#1
at kotlinx.coroutines.BuildersKt.runBlocking(<unknown string>:1)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:36)
local variable: kotlin.coroutines.EmptyCoroutineContext#1
at kotlinx.coroutines.BuildersKt.runBlocking$default(<unknown string>:1)
local variable: io.ktor.server.cio.CIOApplicationEngine$start$2#1
at io.ktor.server.cio.CIOApplicationEngine.start(CIOApplicationEngine.kt:95)
local variable: io.ktor.server.cio.CIOApplicationEngine#1
at com.example.myapp.ApplicationKt.main(Application.kt:39)
local variable: java.lang.String[]#33
local variable: io.ktor.server.engine.ApplicationEngineEnvironmentReloading#1
"Reference Handler" daemon prio=10 tid=2 RUNNABLE
at java.lang.ref.Reference.waitForReferencePendingList(Native Method)
at java.lang.ref.Reference.processPendingReferences(<unknown string>)
at java.lang.ref.Reference$ReferenceHandler.run(<unknown string>)
"Finalizer" daemon prio=8 tid=3 WAITING
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(<unknown string>)
local variable: java.lang.ref.ReferenceQueue$Lock#57
at java.lang.ref.ReferenceQueue.remove(<unknown string>)
local variable: java.lang.ref.ReferenceQueue#54
at java.lang.ref.Finalizer$FinalizerThread.run(<unknown string>)
local variable: java.lang.System$2#1
"Signal Dispatcher" daemon prio=9 tid=4 RUNNABLE
"Common-Cleaner" daemon prio=8 tid=9 TIMED_WAITING
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(<unknown string>)
local variable: java.lang.ref.ReferenceQueue$Lock#58
local variable: java.lang.ref.ReferenceQueue#55
at jdk.internal.ref.CleanerImpl.run(<unknown string>)
local variable: jdk.internal.ref.CleanerImpl#1
at java.lang.Thread.run(<unknown string>)
at jdk.internal.misc.InnocuousThread.run(<unknown string>)
"DefaultDispatcher-worker-1" daemon prio=5 tid=10 TIMED_WAITING
at jdk.internal.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.parkNanos(<unknown string>)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.park(CoroutineScheduler.kt:783)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.tryPark(CoroutineScheduler.kt:728)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:711)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
"DefaultDispatcher-worker-2" daemon prio=5 tid=11 TIMED_WAITING
at jdk.internal.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.parkNanos(<unknown string>)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.park(CoroutineScheduler.kt:783)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.tryPark(CoroutineScheduler.kt:728)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:711)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
"DefaultDispatcher-worker-3" daemon prio=5 tid=12 RUNNABLE
at sun.nio.ch.EPoll.wait(Native Method)
at sun.nio.ch.EPollSelectorImpl.doSelect(<unknown string>)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(<unknown string>)
local variable: sun.nio.ch.EPollSelectorImpl#1
local variable: sun.nio.ch.Util$2#1
at sun.nio.ch.SelectorImpl.select(<unknown string>)
at io.ktor.network.selector.ActorSelectorManager.select(ActorSelectorManager.kt:97)
local variable: io.ktor.network.selector.ActorSelectorManager#1
at io.ktor.network.selector.ActorSelectorManager$select$1.invokeSuspend(ActorSelectorManager.kt)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
local variable: io.ktor.network.selector.ActorSelectorManager$process$1#1
local variable: io.ktor.network.selector.ActorSelectorManager$select$1#1
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
local variable: kotlin.coroutines.CombinedContext#5
local variable: kotlinx.coroutines.DispatchedContinuation#2249
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:738)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
"mysql-cj-abandoned-connection-cleanup" daemon prio=5 tid=14 TIMED_WAITING
at java.lang.Object.wait(Native Method)
at java.lang.ref.ReferenceQueue.remove(<unknown string>)
local variable: java.lang.ref.ReferenceQueue$Lock#151
local variable: java.lang.ref.ReferenceQueue#148
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:85)
at java.util.concurrent.ThreadPoolExecutor.runWorker(<unknown string>)
local variable: com.mysql.cj.jdbc.AbandonedConnectionCleanupThread#1
local variable: java.util.concurrent.ThreadPoolExecutor#2
at java.util.concurrent.ThreadPoolExecutor$Worker.run(<unknown string>)
local variable: java.util.concurrent.ThreadPoolExecutor$Worker#1
at java.lang.Thread.run(<unknown string>)
"HikariPool-1 housekeeper" daemon prio=5 tid=15 TIMED_WAITING
at jdk.internal.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.parkNanos(<unknown string>)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(<unknown string>)
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject#10
local variable: java.util.concurrent.locks.AbstractQueuedSynchronizer$Node#5
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(<unknown string>)
local variable: java.util.concurrent.locks.ReentrantLock#12
at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(<unknown string>)
local variable: java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue#1
at java.util.concurrent.ThreadPoolExecutor.getTask(<unknown string>)
at java.util.concurrent.ThreadPoolExecutor.runWorker(<unknown string>)
local variable: java.util.concurrent.ScheduledThreadPoolExecutor#1
at java.util.concurrent.ThreadPoolExecutor$Worker.run(<unknown string>)
local variable: java.util.concurrent.ThreadPoolExecutor$Worker#2
at java.lang.Thread.run(<unknown string>)
"kotlinx.coroutines.DefaultExecutor" daemon prio=5 tid=19 TIMED_WAITING
at jdk.internal.misc.Unsafe.park(Native Method)
at java.util.concurrent.locks.LockSupport.parkNanos(<unknown string>)
at kotlinx.coroutines.DefaultExecutor.run(DefaultExecutor.kt:83)
local variable: kotlinx.coroutines.DefaultExecutor#1
at java.lang.Thread.run(<unknown string>)
"ktor-cio-dispatcher-worker-2" daemon prio=5 tid=27 RUNNABLE
at sun.nio.ch.EPoll.wait(Native Method)
at sun.nio.ch.EPollSelectorImpl.doSelect(<unknown string>)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(<unknown string>)
local variable: sun.nio.ch.EPollSelectorImpl#2
local variable: sun.nio.ch.Util$2#2
at sun.nio.ch.SelectorImpl.select(<unknown string>)
at io.ktor.network.selector.ActorSelectorManager.select(ActorSelectorManager.kt:97)
local variable: io.ktor.network.selector.ActorSelectorManager#2
at io.ktor.network.selector.ActorSelectorManager$select$1.invokeSuspend(ActorSelectorManager.kt)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
local variable: io.ktor.network.selector.ActorSelectorManager$process$1#2
local variable: io.ktor.network.selector.ActorSelectorManager$select$1#699
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
local variable: kotlin.coroutines.CombinedContext#20
local variable: kotlinx.coroutines.DispatchedContinuation#2947
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler.shutdown(CoroutineScheduler.kt:361)
at kotlinx.coroutines.scheduling.CoroutineScheduler.close(CoroutineScheduler.kt:329)
at kotlinx.coroutines.scheduling.ExperimentalCoroutineDispatcher.close(Dispatcher.kt:73)
at io.ktor.client.engine.HttpClientEngineBaseKt.close(HttpClientEngineBase.kt:44)
at io.ktor.client.engine.HttpClientEngineBaseKt.access$close(HttpClientEngineBase.kt:1)
local variable: kotlinx.coroutines.scheduling.ExperimentalCoroutineDispatcher#2
at io.ktor.client.engine.HttpClientEngineBase$close$$inlined$apply$lambda$1.invoke(HttpClientEngineBase.kt:28)
at io.ktor.client.engine.HttpClientEngineBase$close$$inlined$apply$lambda$1.invoke(HttpClientEngineBase.kt:18)
local variable: io.ktor.client.engine.HttpClientEngineBase$close$$inlined$apply$lambda$1#1
at kotlinx.coroutines.InvokeOnCompletion.invoke(JobSupport.kt:1386)
at kotlinx.coroutines.JobSupport.notifyCompletion(JobSupport.kt:1529)
local variable: kotlinx.coroutines.NodeList#5
local variable: kotlinx.coroutines.InvokeOnCompletion#4
at kotlinx.coroutines.JobSupport.completeStateFinalization(JobSupport.kt:323)
at kotlinx.coroutines.JobSupport.finalizeFinishingState(JobSupport.kt:240)
local variable: java.util.ArrayList#1580
at kotlinx.coroutines.JobSupport.continueCompleting(JobSupport.kt:932)
at kotlinx.coroutines.JobSupport.access$continueCompleting(JobSupport.kt:28)
local variable: kotlinx.coroutines.ChildHandleNode#6
local variable: kotlinx.coroutines.SupervisorJobImpl#3
local variable: kotlinx.coroutines.JobSupport$Finishing#1
at kotlinx.coroutines.JobSupport$ChildCompletion.invoke(JobSupport.kt:1152)
at kotlinx.coroutines.JobSupport.notifyCompletion(JobSupport.kt:1529)
local variable: kotlinx.coroutines.JobSupport$ChildCompletion#1
at kotlinx.coroutines.JobSupport.completeStateFinalization(JobSupport.kt:323)
at kotlinx.coroutines.JobSupport.finalizeFinishingState(JobSupport.kt:240)
local variable: java.util.ArrayList#1579
at kotlinx.coroutines.JobSupport.tryMakeCompletingSlowPath(JobSupport.kt:903)
local variable: kotlinx.coroutines.JobSupport$Finishing#2
at kotlinx.coroutines.JobSupport.tryMakeCompleting(JobSupport.kt:860)
at kotlinx.coroutines.JobSupport.makeCompletingOnce$kotlinx_coroutines_core(JobSupport.kt:825)
local variable: kotlinx.coroutines.NodeList#6
at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:111)
local variable: kotlinx.coroutines.LazyStandaloneCoroutine#2
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:32)
at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:113)
local variable: kotlinx.coroutines.TimeoutCoroutine#1
local variable: kotlin.Result$Failure#2
local variable: kotlinx.coroutines.CompletedExceptionally#2
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:55)
local variable: java.lang.Integer#2
local variable: kotlin.Result$Companion#1
local variable: kotlinx.coroutines.DispatchedContinuation#7
local variable: io.ktor.client.engine.cio.Endpoint$postman$1$task$1#1
local variable: kotlin.coroutines.CombinedContext#21
local variable: kotlinx.coroutines.channels.ClosedReceiveChannelException#1
local variable: kotlinx.coroutines.CompletedExceptionally#1
local variable: kotlin.Result$Failure#1
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
local variable: kotlinx.coroutines.scheduling.CoroutineScheduler#3
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:738)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
local variable: kotlinx.coroutines.CancellableContinuationImpl#4
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
"ktor-cio-dispatcher-worker-3" daemon prio=5 tid=48 RUNNABLE
at sun.nio.ch.EPoll.wait(Native Method)
at sun.nio.ch.EPollSelectorImpl.doSelect(<unknown string>)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(<unknown string>)
local variable: sun.nio.ch.EPollSelectorImpl#3
local variable: sun.nio.ch.Util$2#3
at sun.nio.ch.SelectorImpl.select(<unknown string>)
at io.ktor.network.selector.ActorSelectorManager.select(ActorSelectorManager.kt:97)
local variable: io.ktor.network.selector.ActorSelectorManager#3
at io.ktor.network.selector.ActorSelectorManager$select$1.invokeSuspend(ActorSelectorManager.kt)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
local variable: io.ktor.network.selector.ActorSelectorManager$process$1#3
local variable: io.ktor.network.selector.ActorSelectorManager$select$1#280
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
local variable: kotlin.coroutines.CombinedContext#31
local variable: kotlinx.coroutines.DispatchedContinuation#2528
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler.shutdown(CoroutineScheduler.kt:361)
at kotlinx.coroutines.scheduling.CoroutineScheduler.close(CoroutineScheduler.kt:329)
local variable: kotlinx.coroutines.scheduling.CoroutineScheduler#4
at kotlinx.coroutines.scheduling.ExperimentalCoroutineDispatcher.close(Dispatcher.kt:73)
at io.ktor.client.engine.HttpClientEngineBaseKt.close(HttpClientEngineBase.kt:44)
at io.ktor.client.engine.HttpClientEngineBaseKt.access$close(HttpClientEngineBase.kt:1)
local variable: kotlinx.coroutines.scheduling.ExperimentalCoroutineDispatcher#3
at io.ktor.client.engine.HttpClientEngineBase$close$$inlined$apply$lambda$1.invoke(HttpClientEngineBase.kt:28)
at io.ktor.client.engine.HttpClientEngineBase$close$$inlined$apply$lambda$1.invoke(HttpClientEngineBase.kt:18)
local variable: io.ktor.client.engine.HttpClientEngineBase$close$$inlined$apply$lambda$1#2
at kotlinx.coroutines.InvokeOnCompletion.invoke(JobSupport.kt:1386)
at kotlinx.coroutines.JobSupport.notifyCompletion(JobSupport.kt:1529)
local variable: kotlinx.coroutines.NodeList#7
local variable: kotlinx.coroutines.InvokeOnCompletion#6
at kotlinx.coroutines.JobSupport.completeStateFinalization(JobSupport.kt:323)
at kotlinx.coroutines.JobSupport.finalizeFinishingState(JobSupport.kt:240)
at kotlinx.coroutines.JobSupport.continueCompleting(JobSupport.kt:932)
at kotlinx.coroutines.JobSupport.access$continueCompleting(JobSupport.kt:28)
local variable: kotlinx.coroutines.SupervisorJobImpl#4
local variable: kotlinx.coroutines.JobSupport$Finishing#3
local variable: kotlinx.coroutines.ChildHandleNode#7
at kotlinx.coroutines.JobSupport$ChildCompletion.invoke(JobSupport.kt:1152)
at kotlinx.coroutines.JobSupport.notifyCompletion(JobSupport.kt:1529)
local variable: kotlinx.coroutines.JobSupport$ChildCompletion#2
local variable: kotlinx.coroutines.NodeList#8
at kotlinx.coroutines.JobSupport.completeStateFinalization(JobSupport.kt:323)
at kotlinx.coroutines.JobSupport.finalizeFinishingState(JobSupport.kt:240)
at kotlinx.coroutines.JobSupport.tryMakeCompletingSlowPath(JobSupport.kt:903)
at kotlinx.coroutines.JobSupport.tryMakeCompleting(JobSupport.kt:860)
at kotlinx.coroutines.JobSupport.makeCompletingOnce$kotlinx_coroutines_core(JobSupport.kt:825)
at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:111)
local variable: kotlinx.coroutines.LazyStandaloneCoroutine#3
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:32)
local variable: kotlinx.coroutines.TimeoutCoroutine#2
local variable: kotlinx.coroutines.CompletedExceptionally#3
at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:113)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:55)
local variable: kotlin.coroutines.CombinedContext#32
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:738)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
local variable: kotlinx.coroutines.CancellableContinuationImpl#5
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
"ktor-cio-dispatcher-worker-4" daemon prio=5 tid=53 RUNNABLE
at sun.nio.ch.EPoll.wait(Native Method)
at sun.nio.ch.EPollSelectorImpl.doSelect(<unknown string>)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(<unknown string>)
local variable: sun.nio.ch.EPollSelectorImpl#4
local variable: sun.nio.ch.Util$2#4
at sun.nio.ch.SelectorImpl.select(<unknown string>)
at io.ktor.network.selector.ActorSelectorManager.select(ActorSelectorManager.kt:97)
local variable: io.ktor.network.selector.ActorSelectorManager#4
at io.ktor.network.selector.ActorSelectorManager$select$1.invokeSuspend(ActorSelectorManager.kt)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
local variable: io.ktor.network.selector.ActorSelectorManager$process$1#4
local variable: io.ktor.network.selector.ActorSelectorManager$select$1#249
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
local variable: kotlin.coroutines.CombinedContext#33
local variable: kotlinx.coroutines.DispatchedContinuation#2497
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler.shutdown(CoroutineScheduler.kt:361)
at kotlinx.coroutines.scheduling.CoroutineScheduler.close(CoroutineScheduler.kt:329)
local variable: kotlinx.coroutines.scheduling.CoroutineScheduler#5
at kotlinx.coroutines.scheduling.ExperimentalCoroutineDispatcher.close(Dispatcher.kt:73)
at io.ktor.client.engine.HttpClientEngineBaseKt.close(HttpClientEngineBase.kt:44)
at io.ktor.client.engine.HttpClientEngineBaseKt.access$close(HttpClientEngineBase.kt:1)
local variable: kotlinx.coroutines.scheduling.ExperimentalCoroutineDispatcher#4
at io.ktor.client.engine.HttpClientEngineBase$close$$inlined$apply$lambda$1.invoke(HttpClientEngineBase.kt:28)
at io.ktor.client.engine.HttpClientEngineBase$close$$inlined$apply$lambda$1.invoke(HttpClientEngineBase.kt:18)
local variable: io.ktor.client.engine.HttpClientEngineBase$close$$inlined$apply$lambda$1#3
at kotlinx.coroutines.InvokeOnCompletion.invoke(JobSupport.kt:1386)
at kotlinx.coroutines.JobSupport.notifyCompletion(JobSupport.kt:1529)
local variable: kotlinx.coroutines.NodeList#9
local variable: kotlinx.coroutines.InvokeOnCompletion#7
at kotlinx.coroutines.JobSupport.completeStateFinalization(JobSupport.kt:323)
at kotlinx.coroutines.JobSupport.finalizeFinishingState(JobSupport.kt:240)
at kotlinx.coroutines.JobSupport.continueCompleting(JobSupport.kt:932)
at kotlinx.coroutines.JobSupport.access$continueCompleting(JobSupport.kt:28)
local variable: kotlinx.coroutines.SupervisorJobImpl#5
local variable: kotlinx.coroutines.JobSupport$Finishing#4
local variable: kotlinx.coroutines.ChildHandleNode#8
at kotlinx.coroutines.JobSupport$ChildCompletion.invoke(JobSupport.kt:1152)
at kotlinx.coroutines.JobSupport.notifyCompletion(JobSupport.kt:1529)
local variable: kotlinx.coroutines.JobSupport$ChildCompletion#3
local variable: kotlinx.coroutines.NodeList#10
at kotlinx.coroutines.JobSupport.completeStateFinalization(JobSupport.kt:323)
at kotlinx.coroutines.JobSupport.finalizeFinishingState(JobSupport.kt:240)
at kotlinx.coroutines.JobSupport.tryMakeCompletingSlowPath(JobSupport.kt:903)
at kotlinx.coroutines.JobSupport.tryMakeCompleting(JobSupport.kt:860)
at kotlinx.coroutines.JobSupport.makeCompletingOnce$kotlinx_coroutines_core(JobSupport.kt:825)
at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:111)
local variable: kotlinx.coroutines.StandaloneCoroutine#5
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
local variable: kotlin.coroutines.CombinedContext#34
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:738)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
local variable: kotlinx.coroutines.CancellableContinuationImpl#6
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)
"ktor-cio-dispatcher-worker-3" daemon prio=5 tid=56 RUNNABLE
at sun.nio.ch.EPoll.wait(Native Method)
at sun.nio.ch.EPollSelectorImpl.doSelect(<unknown string>)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(<unknown string>)
local variable: sun.nio.ch.EPollSelectorImpl#5
local variable: sun.nio.ch.Util$2#5
at sun.nio.ch.SelectorImpl.select(<unknown string>)
at io.ktor.network.selector.ActorSelectorManager.select(ActorSelectorManager.kt:97)
local variable: io.ktor.network.selector.ActorSelectorManager#5
at io.ktor.network.selector.ActorSelectorManager$select$1.invokeSuspend(ActorSelectorManager.kt)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
local variable: io.ktor.network.selector.ActorSelectorManager$process$1#5
local variable: io.ktor.network.selector.ActorSelectorManager$select$1#218
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:56)
local variable: kotlin.coroutines.CombinedContext#35
local variable: kotlinx.coroutines.DispatchedContinuation#2466
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler.shutdown(CoroutineScheduler.kt:361)
at kotlinx.coroutines.scheduling.CoroutineScheduler.close(CoroutineScheduler.kt:329)
local variable: kotlinx.coroutines.scheduling.CoroutineScheduler#6
at kotlinx.coroutines.scheduling.ExperimentalCoroutineDispatcher.close(Dispatcher.kt:73)
at io.ktor.client.engine.HttpClientEngineBaseKt.close(HttpClientEngineBase.kt:44)
at io.ktor.client.engine.HttpClientEngineBaseKt.access$close(HttpClientEngineBase.kt:1)
local variable: kotlinx.coroutines.scheduling.ExperimentalCoroutineDispatcher#5
at io.ktor.client.engine.HttpClientEngineBase$close$$inlined$apply$lambda$1.invoke(HttpClientEngineBase.kt:28)
at io.ktor.client.engine.HttpClientEngineBase$close$$inlined$apply$lambda$1.invoke(HttpClientEngineBase.kt:18)
local variable: io.ktor.client.engine.HttpClientEngineBase$close$$inlined$apply$lambda$1#4
at kotlinx.coroutines.InvokeOnCompletion.invoke(JobSupport.kt:1386)
at kotlinx.coroutines.JobSupport.notifyCompletion(JobSupport.kt:1529)
local variable: kotlinx.coroutines.NodeList#11
local variable: kotlinx.coroutines.InvokeOnCompletion#8
at kotlinx.coroutines.JobSupport.completeStateFinalization(JobSupport.kt:323)
at kotlinx.coroutines.JobSupport.finalizeFinishingState(JobSupport.kt:240)
at kotlinx.coroutines.JobSupport.continueCompleting(JobSupport.kt:932)
at kotlinx.coroutines.JobSupport.access$continueCompleting(JobSupport.kt:28)
local variable: kotlinx.coroutines.SupervisorJobImpl#6
local variable: kotlinx.coroutines.JobSupport$Finishing#5
local variable: kotlinx.coroutines.ChildHandleNode#9
at kotlinx.coroutines.JobSupport$ChildCompletion.invoke(JobSupport.kt:1152)
at kotlinx.coroutines.JobSupport.notifyCompletion(JobSupport.kt:1529)
local variable: kotlinx.coroutines.JobSupport$ChildCompletion#4
local variable: kotlinx.coroutines.NodeList#12
at kotlinx.coroutines.JobSupport.completeStateFinalization(JobSupport.kt:323)
at kotlinx.coroutines.JobSupport.finalizeFinishingState(JobSupport.kt:240)
at kotlinx.coroutines.JobSupport.tryMakeCompletingSlowPath(JobSupport.kt:903)
at kotlinx.coroutines.JobSupport.tryMakeCompleting(JobSupport.kt:860)
at kotlinx.coroutines.JobSupport.makeCompletingOnce$kotlinx_coroutines_core(JobSupport.kt:825)
at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:111)
local variable: kotlinx.coroutines.LazyStandaloneCoroutine#4
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
at kotlinx.coroutines.internal.ScopeCoroutine.afterResume(Scopes.kt:32)
local variable: kotlinx.coroutines.TimeoutCoroutine#3
local variable: kotlinx.coroutines.CompletedExceptionally#4
at kotlinx.coroutines.AbstractCoroutine.resumeWith(AbstractCoroutine.kt:113)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:55)
local variable: kotlin.coroutines.CombinedContext#36
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:571)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:738)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:678)
local variable: kotlinx.coroutines.CancellableContinuationImpl#7
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:665)