Kotlin/kotlinx.coroutines

CoroutinesTimeout non-coroutines jobs dump

Offen

#1.543 geöffnet am 17.09.2019

 (4 Kommentare) (0 Reaktionen) (1 zugewiesene Person)Kotlin (1.927 Forks)batch import
debugenhancementhelp wanted

Repository-Metriken

Stars
 (13.749 Sterne)
PR-Merge-Metriken
 (PR-Metriken ausstehend)

Beschreibung

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

Contributor Guide