Skip to content

Commit 05a7eb2

Browse files
authored
Merge pull request #150 from aPureBase/temp-solution-for-data-loader-issues
No lazy coroutines
2 parents 2be753a + bb38dd9 commit 05a7eb2

File tree

3 files changed

+32
-16
lines changed

3 files changed

+32
-16
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# KGraphQL version
2-
version=0.17.9-alpha
2+
version=0.17.9-alpha-2
33

44
# Dependencies
55
coroutine_version=1.3.9

kgraphql/src/main/kotlin/com/apurebase/kgraphql/schema/execution/DeferredJsonMap.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class DeferredJsonMap internal constructor(
4343
}
4444

4545
fun asDeferred() : Deferred<JsonElement> {
46-
return async(coroutineContext, start = CoroutineStart.LAZY) {
46+
return async(coroutineContext) {
4747
awaitAll()
4848
build()
4949
}
@@ -62,8 +62,8 @@ class DeferredJsonMap internal constructor(
6262
job.complete()
6363
}
6464

65-
fun deferredLaunch(lazy: Boolean = true, block: suspend DeferredJsonMap.() -> Unit) {
66-
moreJobs.add(async(job, start = if (lazy) CoroutineStart.LAZY else CoroutineStart.DEFAULT) {
65+
fun deferredLaunch(block: suspend DeferredJsonMap.() -> Unit) {
66+
moreJobs.add(async(job) {
6767
block(this@DeferredJsonMap)
6868
})
6969
}

kgraphql/src/test/kotlin/com/apurebase/kgraphql/DataLoaderTest.kt

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import java.util.concurrent.atomic.AtomicInteger
1717

1818
// This is just for safety, so when the tests fail and
1919
// end up in an endless waiting state, they'll fail after this amount
20-
val timeout = ofSeconds(10)!!
20+
val timeout = ofSeconds(60)!!
2121
const val repeatTimes = 2
2222

2323
class DataLoaderTest {
@@ -89,6 +89,7 @@ class DataLoaderTest {
8989
dataProperty<Int, List<Person>>("colleagues") {
9090
prepare { it.id }
9191
loader { keys ->
92+
delay(10)
9293
println("== Running [colleagues] loader with keys: $keys ==")
9394
keys.map { ExecutionResult.Success(colleagues[it] ?: listOf()) }
9495
}
@@ -166,7 +167,10 @@ class DataLoaderTest {
166167
"Testing 3" -> "Jógvan" to "Høgni"
167168
else -> "${it}Nest-0" to "${it}Nest-1"
168169
}
169-
ExecutionResult.Success(listOf(ABC(a1), ABC(a2)))
170+
delay(1)
171+
ExecutionResult.Success(
172+
(1..7).map { if (it % 2 == 0) ABC(a1) else ABC(a2) }
173+
)
170174
}
171175
}
172176
prepare { parent ->
@@ -291,7 +295,7 @@ class DataLoaderTest {
291295
return fn(true) + fn(false)
292296
}
293297

294-
@RepeatedTest(repeatTimes)
298+
@RepeatedTest(repeatTimes, name = "Nested array loaders")
295299
fun `Nested array loaders`() {
296300
assertTimeoutPreemptively(timeout) {
297301
val (schema) = schema()
@@ -313,7 +317,7 @@ class DataLoaderTest {
313317
}
314318
}
315319

316-
@RepeatedTest(repeatTimes)
320+
@RepeatedTest(repeatTimes, name = "Old basic resolvers in new executor")
317321
fun `Old basic resolvers in new executor`() {
318322
assertTimeoutPreemptively(timeout) {
319323
val (schema) = schema()
@@ -334,7 +338,7 @@ class DataLoaderTest {
334338
}
335339
}
336340

337-
@RepeatedTest(repeatTimes)
341+
@RepeatedTest(repeatTimes, name = "Very basic new Level executor")
338342
fun `Very basic new Level executor`() {
339343
assertTimeoutPreemptively(timeout) {
340344
val (schema) = schema()
@@ -358,7 +362,7 @@ class DataLoaderTest {
358362
}
359363
}
360364

361-
@RepeatedTest(repeatTimes)
365+
@RepeatedTest(repeatTimes, name = "dataloader with nullable prepare keys")
362366
fun `dataloader with nullable prepare keys`() {
363367
assertTimeoutPreemptively(timeout) {
364368
val (schema) = schema()
@@ -383,7 +387,7 @@ class DataLoaderTest {
383387
}
384388
}
385389

386-
@RepeatedTest(repeatTimes)
390+
@RepeatedTest(repeatTimes, name = "Basic dataloader test")
387391
fun `Basic dataloader test`() {
388392
assertTimeoutPreemptively(timeout) {
389393
val (schema) = schema()
@@ -409,7 +413,7 @@ class DataLoaderTest {
409413
}
410414
}
411415

412-
@RepeatedTest(2)
416+
@RepeatedTest(2, name = "basic data loader")
413417
fun `basic data loader`() {
414418
assertTimeoutPreemptively(timeout) {
415419
val (schema, counters) = schema()
@@ -437,7 +441,7 @@ class DataLoaderTest {
437441
}
438442
}
439443

440-
@RepeatedTest(repeatTimes)
444+
@RepeatedTest(repeatTimes, name = "data loader cache per request only")
441445
fun `data loader cache per request only`() {
442446
assertTimeoutPreemptively(timeout) {
443447
val (schema, counters) = schema()
@@ -462,7 +466,7 @@ class DataLoaderTest {
462466
}
463467
}
464468

465-
@RepeatedTest(repeatTimes)
469+
@RepeatedTest(repeatTimes, name = "multiple layers of dataLoaders")
466470
fun `multiple layers of dataLoaders`() {
467471
assertTimeoutPreemptively(timeout) {
468472
val (schema) = schema()
@@ -472,12 +476,24 @@ class DataLoaderTest {
472476
abc {
473477
value
474478
B
475-
children {
479+
children { # 7
476480
value
477481
B
478-
children {
482+
children { # 49
479483
value
480484
B
485+
children { # 343
486+
value
487+
B
488+
children { # 2.401
489+
value
490+
B
491+
children { # 16.807
492+
value
493+
B
494+
}
495+
}
496+
}
481497
}
482498
}
483499
}

0 commit comments

Comments
 (0)