2026-05-25 16:30:26.252 [Test worker] INFO io.ktor.server.Application - Autoreload is disabled because the development mode is off. 2026-05-25 16:30:26.386 [Test worker] INFO io.ktor.server.Application - Application started in 0.334 seconds. 2026-05-25 16:30:26.528 [DefaultDispatcher-worker-1 @coroutine#2] INFO io.ktor.server.Application - Responding at http://0.0.0.0:34321 2026-05-25 16:30:27.949 [DefaultDispatcher-worker-2 @coroutine#8] TRACE i.k.c.p.c.ContentNegotiation - Adding Accept=application/json header for http://localhost:34321/resources/index.json 2026-05-25 16:30:27.950 [DefaultDispatcher-worker-2 @coroutine#8] TRACE i.k.c.p.c.ContentNegotiation - Body type class io.ktor.client.utils.EmptyContent is in ignored types. Skipping ContentNegotiation for http://localhost:34321/resources/index.json. 2026-05-25 16:30:27.950 [DefaultDispatcher-worker-2 @coroutine#8] TRACE i.ktor.client.plugins.HttpPlainText - Adding Accept-Charset=UTF-8 to http://localhost:34321/resources/index.json 2026-05-25 16:30:28.165 [eventLoopGroupProxy-4-1 @call-handler#12] TRACE io.ktor.server.routing.Routing - Trace for [resources, index.json] /, segment:0 -> SUCCESS @ / /(staticContent), segment:0 -> SUCCESS @ /(staticContent) /(staticContent)/resources, segment:1 -> SUCCESS @ /(staticContent)/resources /(staticContent)/resources/{...}, segment:2 -> SUCCESS; Parameters [static-content-path-parameter=[index.json]] @ /(staticContent)/resources/{...} /(staticContent)/resources/{...}/(method:GET), segment:2 -> SUCCESS @ /(staticContent)/resources/{...}/(method:GET) Matched routes: "" -> "(staticContent)" -> "resources" -> "{...}" -> "(method:GET)" Routing resolve result: SUCCESS; Parameters [static-content-path-parameter=[index.json]] @ /(staticContent)/resources/{...}/(method:GET) 2026-05-25 16:30:28.229 [eventLoopGroupProxy-4-1 @call-handler#12] INFO io.ktor.server.Application - 200 OK: GET - /resources/index.json in 85ms 2026-05-25 16:30:28.233 [DefaultDispatcher-worker-2 @coroutine#8] TRACE io.ktor.client.plugins.SaveBody - Saving body for http://localhost:34321/resources/index.json 2026-05-25 16:30:28.237 [DefaultDispatcher-worker-2 @coroutine#8] TRACE i.k.client.plugins.HttpCallValidator - Validating response for request http://localhost:34321/resources/index.json 2026-05-25 16:30:28.239 [DefaultDispatcher-worker-2 @coroutine#8] TRACE i.k.c.p.DefaultResponseValidation - Skipping default response validation for http://localhost:34321/resources/index.json 2026-05-25 16:30:28.265 [DefaultDispatcher-worker-2 @coroutine#8] TRACE i.k.c.p.c.ContentNegotiation - Response body was converted to class world.respect.lib.opds.model.OpdsFeed for http://localhost:34321/resources/index.json. 2026-05-25 16:30:28.317 [DefaultDispatcher-worker-4 @coroutine#20] TRACE i.k.c.p.c.ContentNegotiation - Adding Accept=application/json header for http://localhost:34321/resources/index.json 2026-05-25 16:30:28.318 [DefaultDispatcher-worker-4 @coroutine#20] TRACE i.k.c.p.c.ContentNegotiation - Body type class io.ktor.client.utils.EmptyContent is in ignored types. Skipping ContentNegotiation for http://localhost:34321/resources/index.json. 2026-05-25 16:30:28.318 [DefaultDispatcher-worker-4 @coroutine#20] TRACE i.ktor.client.plugins.HttpPlainText - Adding Accept-Charset=UTF-8 to http://localhost:34321/resources/index.json 2026-05-25 16:30:28.323 [eventLoopGroupProxy-4-1 @call-handler#22] TRACE io.ktor.server.routing.Routing - Trace for [resources, index.json] /, segment:0 -> SUCCESS @ / /(staticContent), segment:0 -> SUCCESS @ /(staticContent) /(staticContent)/resources, segment:1 -> SUCCESS @ /(staticContent)/resources /(staticContent)/resources/{...}, segment:2 -> SUCCESS; Parameters [static-content-path-parameter=[index.json]] @ /(staticContent)/resources/{...} /(staticContent)/resources/{...}/(method:GET), segment:2 -> SUCCESS @ /(staticContent)/resources/{...}/(method:GET) Matched routes: "" -> "(staticContent)" -> "resources" -> "{...}" -> "(method:GET)" Routing resolve result: SUCCESS; Parameters [static-content-path-parameter=[index.json]] @ /(staticContent)/resources/{...}/(method:GET) 2026-05-25 16:30:28.325 [eventLoopGroupProxy-4-1 @call-handler#22] INFO io.ktor.server.Application - 304 Not Modified: GET - /resources/index.json in 2ms 2026-05-25 16:30:28.326 [DefaultDispatcher-worker-4 @coroutine#20] TRACE io.ktor.client.plugins.SaveBody - Saving body for http://localhost:34321/resources/index.json 2026-05-25 16:30:28.326 [DefaultDispatcher-worker-4 @coroutine#20] TRACE i.k.client.plugins.HttpCallValidator - Validating response for request http://localhost:34321/resources/index.json 2026-05-25 16:30:28.326 [DefaultDispatcher-worker-4 @coroutine#20] TRACE i.k.c.p.DefaultResponseValidation - Skipping default response validation for http://localhost:34321/resources/index.json 2026-05-25 16:30:30.384 [Test worker] INFO io.ktor.server.Application - Autoreload is disabled because the development mode is off. 2026-05-25 16:30:30.385 [Test worker] INFO io.ktor.server.Application - Application started in 0.001 seconds. 2026-05-25 16:30:30.388 [DefaultDispatcher-worker-4 @coroutine#26] INFO io.ktor.server.Application - Responding at http://0.0.0.0:39355 2026-05-25 16:30:30.463 [Test worker @coroutine#30] TRACE i.k.c.p.c.ContentNegotiation - Adding Accept=application/json header for http://localhost:39355/resources/index.json 2026-05-25 16:30:30.464 [Test worker @coroutine#30] TRACE i.k.c.p.c.ContentNegotiation - Body type class io.ktor.client.utils.EmptyContent is in ignored types. Skipping ContentNegotiation for http://localhost:39355/resources/index.json. 2026-05-25 16:30:30.465 [Test worker @coroutine#30] TRACE i.ktor.client.plugins.HttpPlainText - Adding Accept-Charset=UTF-8 to http://localhost:39355/resources/index.json 2026-05-25 16:30:30.471 [eventLoopGroupProxy-7-1 @call-handler#35] TRACE io.ktor.server.routing.Routing - Trace for [resources, index.json] /, segment:0 -> SUCCESS @ / /(staticContent), segment:0 -> SUCCESS @ /(staticContent) /(staticContent)/resources, segment:1 -> SUCCESS @ /(staticContent)/resources /(staticContent)/resources/{...}, segment:2 -> SUCCESS; Parameters [static-content-path-parameter=[index.json]] @ /(staticContent)/resources/{...} /(staticContent)/resources/{...}/(method:GET), segment:2 -> SUCCESS @ /(staticContent)/resources/{...}/(method:GET) Matched routes: "" -> "(staticContent)" -> "resources" -> "{...}" -> "(method:GET)" Routing resolve result: SUCCESS; Parameters [static-content-path-parameter=[index.json]] @ /(staticContent)/resources/{...}/(method:GET) 2026-05-25 16:30:30.474 [DefaultDispatcher-worker-4 @call-handler#35] INFO io.ktor.server.Application - 200 OK: GET - /resources/index.json in 3ms 2026-05-25 16:30:30.478 [Test worker @coroutine#30] TRACE io.ktor.client.plugins.SaveBody - Saving body for http://localhost:39355/resources/index.json 2026-05-25 16:30:30.485 [Test worker @coroutine#30] TRACE i.k.client.plugins.HttpCallValidator - Validating response for request http://localhost:39355/resources/index.json 2026-05-25 16:30:30.485 [Test worker @coroutine#30] TRACE i.k.c.p.DefaultResponseValidation - Skipping default response validation for http://localhost:39355/resources/index.json 2026-05-25 16:30:30.490 [Test worker @coroutine#30] TRACE i.k.c.p.c.ContentNegotiation - Response body was converted to class world.respect.lib.opds.model.OpdsFeed for http://localhost:39355/resources/index.json. 2026-05-25 16:30:30.515 [DefaultDispatcher-worker-3 @coroutine#43] TRACE i.k.c.p.c.ContentNegotiation - Adding Accept=application/json header for http://localhost:39355/resources/index.json 2026-05-25 16:30:30.515 [DefaultDispatcher-worker-3 @coroutine#43] TRACE i.k.c.p.c.ContentNegotiation - Body type class io.ktor.client.utils.EmptyContent is in ignored types. Skipping ContentNegotiation for http://localhost:39355/resources/index.json. 2026-05-25 16:30:30.515 [DefaultDispatcher-worker-3 @coroutine#43] TRACE i.ktor.client.plugins.HttpPlainText - Adding Accept-Charset=UTF-8 to http://localhost:39355/resources/index.json 2026-05-25 16:30:30.521 [eventLoopGroupProxy-7-1 @call-handler#45] TRACE io.ktor.server.routing.Routing - Trace for [resources, index.json] /, segment:0 -> SUCCESS @ / /(staticContent), segment:0 -> SUCCESS @ /(staticContent) /(staticContent)/resources, segment:1 -> SUCCESS @ /(staticContent)/resources /(staticContent)/resources/{...}, segment:2 -> SUCCESS; Parameters [static-content-path-parameter=[index.json]] @ /(staticContent)/resources/{...} /(staticContent)/resources/{...}/(method:GET), segment:2 -> SUCCESS @ /(staticContent)/resources/{...}/(method:GET) Matched routes: "" -> "(staticContent)" -> "resources" -> "{...}" -> "(method:GET)" Routing resolve result: SUCCESS; Parameters [static-content-path-parameter=[index.json]] @ /(staticContent)/resources/{...}/(method:GET) 2026-05-25 16:30:30.522 [eventLoopGroupProxy-7-1 @call-handler#45] INFO io.ktor.server.Application - 304 Not Modified: GET - /resources/index.json in 2ms 2026-05-25 16:30:30.525 [DefaultDispatcher-worker-3 @coroutine#43] TRACE io.ktor.client.plugins.SaveBody - Saving body for http://localhost:39355/resources/index.json 2026-05-25 16:30:30.526 [DefaultDispatcher-worker-3 @coroutine#43] TRACE i.k.client.plugins.HttpCallValidator - Validating response for request http://localhost:39355/resources/index.json 2026-05-25 16:30:30.526 [DefaultDispatcher-worker-3 @coroutine#43] TRACE i.k.c.p.DefaultResponseValidation - Skipping default response validation for http://localhost:39355/resources/index.json 2026-05-25 16:30:32.602 [Test worker] INFO io.ktor.server.Application - Autoreload is disabled because the development mode is off. 2026-05-25 16:30:32.602 [Test worker] DEBUG io.ktor.server.Application - One or more of the handlers thrown an exception java.lang.IllegalStateException: Shutdown in progress at java.base/java.lang.ApplicationShutdownHooks.add(ApplicationShutdownHooks.java:67) at java.base/java.lang.Runtime.addShutdownHook(Runtime.java:250) at io.ktor.server.engine.ShutdownHookJvmKt.platformAddShutdownHook(ShutdownHookJvm.kt:30) at io.ktor.server.engine.ShutdownHookKt.addShutdownHook$lambda$0(ShutdownHook.kt:22) at io.ktor.events.Events.raise(Events.kt:52) at io.ktor.server.engine.EmbeddedServer.safeRaiseEvent(EmbeddedServerJvm.kt:226) at io.ktor.server.engine.EmbeddedServer.instantiateAndConfigureApplication(EmbeddedServerJvm.kt:380) at io.ktor.server.engine.EmbeddedServer.createApplication(EmbeddedServerJvm.kt:168) at io.ktor.server.engine.EmbeddedServer.start(EmbeddedServerJvm.kt:313) at io.ktor.server.engine.EmbeddedServer.start$default(EmbeddedServerJvm.kt:308) at world.respect.datalayer.repository.opds.OpdsRespectRepositoryIntegrationTest.opdsIntegrationTest(OpdsRespectRepositoryIntegrationTest.kt:85) at world.respect.datalayer.repository.opds.OpdsRespectRepositoryIntegrationTest.givenOpdsPublication_whenLoadedThenWillEmitFlow(OpdsRespectRepositoryIntegrationTest.kt:229) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.rules.ExternalResource$1.evaluate(ExternalResource.java:54) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:112) at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58) at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:40) at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:54) at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:53) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36) at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33) at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:92) at jdk.proxy1/jdk.proxy1.$Proxy4.processTestClass(Unknown Source) at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:183) at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:132) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:103) at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:63) at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:121) at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71) at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69) at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74) 2026-05-25 16:30:32.604 [Test worker] INFO io.ktor.server.Application - Application started in 0.002 seconds.