You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
I wonder how to represent that.
Do you expect to see a creation stacktraces of these jobs (implying corresponding overhead unless #1379 is here)? Because otherwise, it might not be that useful.
Do you want it to see only in tests or during the regular debugging/production uses as well?
How should things like this be represented both in the dump and programmatically?
launch {
val job1 = Job(coroutineContext[Job])
val job2 = Job(job2)
}
Should we nest stacktraces in that case? Or should we print them similarly to printJob, but for all the active jobs?
I believe it is useful in both tests and debugging. Since there is no way to pass a coroutine name to Job() invocation, it seems that we need a stack-trace.
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 aJob
(orCompletableDeferred
) 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.
The text was updated successfully, but these errors were encountered: