Schema.execute( .. ) will not return from suspendResolver { .. } if the result size is big "enough". This behaviour starts with switching from 0.3.1 to 0.4.0. Kgraphql runs in Ktor 1.2.1.
The suspendResolver { .. } is
fun SchemaBuilder<Unit>.timeEntry() {
query("timeEntries") {
suspendResolver { ctx: Context, year: Int?, month: Int?, userId: UserId?, topicFK: Int?, timeEntryTypeFK: Int? ->
val range = dateRange(year, month)
val result = transacted {
selectTimeEntries(ctx.applicationContext(), ctx.applicationContext().userId(userId), range)
}
.filterOn(topicFK != null) { it.topicFK == topicFK }
.filterOn(timeEntryTypeFK != null) { it.timeEntryTypeFK == timeEntryTypeFK }
println(result)
result
}
}
..
The result will be printed (for debugging) and but Schema.execute( .. ) will not return. When executing the test in debug mode and pausing execution the stacktrace looks like this:
park:-1, Unsafe (sun.misc)
parkNanos:215, LockSupport (java.util.concurrent.locks)
parkNanos:31, DefaultTimeSource (kotlinx.coroutines)
joinBlocking:83, BlockingCoroutine (kotlinx.coroutines)
runBlocking:54, BuildersKt__BuildersKt (kotlinx.coroutines)
runBlocking:1, BuildersKt (kotlinx.coroutines)
handleRequest:137, TestApplicationEngine (io.ktor.server.testing)
handleRequest:33, TestEngineKt (io.ktor.server.testing)
invoke:310, GraphQLTest$test get time entries$2 (timebox.graphql)
invoke:49, GraphQLTest$test get time entries$2 (timebox.graphql)
invoke:69, TestEngineKt$withTestApplication$1 (io.ktor.server.testing)
invoke:-1, TestEngineKt$withTestApplication$1 (io.ktor.server.testing)
withApplication:50, TestEngineKt (io.ktor.server.testing)
withApplication$default:44, TestEngineKt (io.ktor.server.testing)
withTestApplication:67, TestEngineKt (io.ktor.server.testing)
test get time entries:305, GraphQLTest (timebox.graphql)
invoke0:-1, NativeMethodAccessorImpl (sun.reflect)
invoke:62, NativeMethodAccessorImpl (sun.reflect)
invoke:43, DelegatingMethodAccessorImpl (sun.reflect)
invoke:498, Method (java.lang.reflect)
invokeMethod:628, ReflectionUtils (org.junit.platform.commons.util)
invoke:117, ExecutableInvoker (org.junit.jupiter.engine.execution)
lambda$invokeTestMethod$7:184, TestMethodTestDescriptor (org.junit.jupiter.engine.descriptor)
execute:-1, 165687172 (org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$287)
execute:73, ThrowableCollector (org.junit.platform.engine.support.hierarchical)
invokeTestMethod:180, TestMethodTestDescriptor (org.junit.jupiter.engine.descriptor)
execute:127, TestMethodTestDescriptor (org.junit.jupiter.engine.descriptor)
execute:68, TestMethodTestDescriptor (org.junit.jupiter.engine.descriptor)
lambda$executeRecursively$5:135, NodeTestTask (org.junit.platform.engine.support.hierarchical)
execute:-1, 1278852808 (org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$176)
execute:73, ThrowableCollector (org.junit.platform.engine.support.hierarchical)
lambda$executeRecursively$7:125, NodeTestTask (org.junit.platform.engine.support.hierarchical)
invoke:-1, 9190301 (org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$175)
around:135, Node (org.junit.platform.engine.support.hierarchical)
lambda$executeRecursively$8:123, NodeTestTask (org.junit.platform.engine.support.hierarchical)
execute:-1, 966544353 (org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$174)
execute:73, ThrowableCollector (org.junit.platform.engine.support.hierarchical)
executeRecursively:122, NodeTestTask (org.junit.platform.engine.support.hierarchical)
execute:80, NodeTestTask (org.junit.platform.engine.support.hierarchical)
accept:-1, 1444635922 (org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda$180)
forEach:1257, ArrayList (java.util)
invokeAll:38, SameThreadHierarchicalTestExecutorService (org.junit.platform.engine.support.hierarchical)
lambda$executeRecursively$5:139, NodeTestTask (org.junit.platform.engine.support.hierarchical)
execute:-1, 1278852808 (org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$176)
execute:73, ThrowableCollector (org.junit.platform.engine.support.hierarchical)
lambda$executeRecursively$7:125, NodeTestTask (org.junit.platform.engine.support.hierarchical)
invoke:-1, 9190301 (org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$175)
around:135, Node (org.junit.platform.engine.support.hierarchical)
lambda$executeRecursively$8:123, NodeTestTask (org.junit.platform.engine.support.hierarchical)
execute:-1, 966544353 (org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$174)
execute:73, ThrowableCollector (org.junit.platform.engine.support.hierarchical)
executeRecursively:122, NodeTestTask (org.junit.platform.engine.support.hierarchical)
execute:80, NodeTestTask (org.junit.platform.engine.support.hierarchical)
accept:-1, 1444635922 (org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda$180)
forEach:1257, ArrayList (java.util)
invokeAll:38, SameThreadHierarchicalTestExecutorService (org.junit.platform.engine.support.hierarchical)
lambda$executeRecursively$5:139, NodeTestTask (org.junit.platform.engine.support.hierarchical)
execute:-1, 1278852808 (org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$176)
execute:73, ThrowableCollector (org.junit.platform.engine.support.hierarchical)
lambda$executeRecursively$7:125, NodeTestTask (org.junit.platform.engine.support.hierarchical)
invoke:-1, 9190301 (org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$175)
around:135, Node (org.junit.platform.engine.support.hierarchical)
lambda$executeRecursively$8:123, NodeTestTask (org.junit.platform.engine.support.hierarchical)
execute:-1, 966544353 (org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda$174)
execute:73, ThrowableCollector (org.junit.platform.engine.support.hierarchical)
executeRecursively:122, NodeTestTask (org.junit.platform.engine.support.hierarchical)
execute:80, NodeTestTask (org.junit.platform.engine.support.hierarchical)
submit:32, SameThreadHierarchicalTestExecutorService (org.junit.platform.engine.support.hierarchical)
execute:57, HierarchicalTestExecutor (org.junit.platform.engine.support.hierarchical)
execute:51, HierarchicalTestEngine (org.junit.platform.engine.support.hierarchical)
execute:229, DefaultLauncher (org.junit.platform.launcher.core)
lambda$execute$6:197, DefaultLauncher (org.junit.platform.launcher.core)
accept:-1, 319644606 (org.junit.platform.launcher.core.DefaultLauncher$$Lambda$135)
withInterceptedStreams:211, DefaultLauncher (org.junit.platform.launcher.core)
execute:191, DefaultLauncher (org.junit.platform.launcher.core)
execute:128, DefaultLauncher (org.junit.platform.launcher.core)
startRunnerWithArgs:69, JUnit5IdeaTestRunner (com.intellij.junit5)
startRunnerWithArgs:47, IdeaTestRunner$Repeater (com.intellij.rt.execution.junit)
prepareStreamsAndStart:242, JUnitStarter (com.intellij.rt.execution.junit)
main:70, JUnitStarter (com.intellij.rt.execution.junit)
If the data (result) returned from the selection is smaller the test passes. And it depends on the machine it is running on. And it also happens in production.