Kotlin/kotlinx.coroutines

CoroutinesTimeout non-coroutines jobs dump

Aberta

#1.543 aberto em 17 de set. de 2019

 (4 comentários) (0 reação) (1 responsável)Kotlin (1.927 forks)batch import
debugenhancementhelp wanted

Métricas do repositório

Stars
 (13.749 estrelas)
Métricas de merge de PR
 (Métricas PR pendentes)

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()
    }
}

Guia do colaborador