Kris Wong
02/13/2020, 5:13 PMCoroutineWorker.execute
with CompletableDeferred
. anyone have an idea why completing the deferred might deadlock when used from execute
?basher
02/13/2020, 5:24 PMKris Wong
02/13/2020, 5:27 PMKris Wong
02/13/2020, 5:31 PM@Test fun testSomething() = runBlocking {
val deferred = CompletableDeferred<Unit>()
CoroutineWorker.execute {
...
deferred.complete(Unit)
}
deferred.await()
}
Kris Wong
02/13/2020, 5:32 PMdeferred.complete
basher
02/13/2020, 5:33 PMKris Wong
02/13/2020, 5:33 PMbasher
02/13/2020, 5:33 PMdeferred
then, which could do bad thingsbasher
02/13/2020, 5:33 PMbasher
02/13/2020, 5:34 PMKris Wong
02/13/2020, 5:34 PMbasher
02/13/2020, 5:34 PMbasher
02/13/2020, 5:34 PMbasher
02/13/2020, 5:34 PMKris Wong
02/13/2020, 5:34 PMbasher
02/13/2020, 5:35 PMKris Wong
02/13/2020, 5:35 PMbasher
02/13/2020, 5:36 PMKris Wong
02/13/2020, 5:36 PMbasher
02/13/2020, 5:36 PMbasher
02/13/2020, 5:37 PMKris Wong
02/13/2020, 5:40 PMbasher
02/13/2020, 5:41 PMbasher
02/13/2020, 5:42 PMKris Wong
02/13/2020, 5:44 PMKris Wong
02/13/2020, 5:48 PMKris Wong
02/13/2020, 8:00 PMCOROUTINE_SUSPENDED
seems to cause the dead lock), but now I have the same behavior with Semaphore
basher
02/13/2020, 8:50 PMbasher
02/13/2020, 8:50 PMKris Wong
02/13/2020, 8:53 PMsuspendCoroutine
Kris Wong
02/13/2020, 8:54 PMKris Wong
02/13/2020, 8:54 PMbasher
02/13/2020, 8:54 PMKris Wong
02/13/2020, 8:55 PM