Kotlin/kotlinx.coroutines
View on GitHubCoroutinesTimeout non-coroutines jobs dump
Open
#1,543 opened on Sep 17, 2019
debugenhancementhelp wanted
Repository metrics
- Stars
- (13,749 stars)
- PR merge metrics
- (Avg merge 130d 3h) (4 merged PRs in 30d)
Description
It would be convenient to see non-coroutines incomplete Job instances in coroutines dumps as well. It will improve structured jobs analysis in the case when a Job (or CompletableDeferred) prevents a parent from completion.
The following example test hangs because of a job and a completable deferred, but the coroutines dump doesn't provide enough information, so it's not that easy to backtrace the reason.
class DumpTest {
@get:Rule
val timeout: CoroutinesTimeout = CoroutinesTimeout.seconds(1)
private val parent = Job()
@BeforeTest
fun start() {
Job(parent)
CompletableDeferred<Unit>(parent)
}
@Test
fun test(): Unit = runBlocking(CoroutineName("blocking")) {
parent.complete()
parent.join()
}
}