task: fix spawn_local source location (#5984)

The location of a spawned task, as shown in tokio console, is taken from
the location set on the tracing span that instruments the task. For this
location to work, there must be unbroken chain of functions instrumented
with `#[track_caller]`.

For `task::spawn_local`, there was a break in this chain and so the
span contained the location of an internal function in tokio.

This change adds the missing `#[track_caller]` attribute. It has been
tested locally as automated tests would really need `tracing-mock` to be
published so we can use it in the tokio tests.
This commit is contained in:
Hayden Stainsby 2023-09-06 10:55:47 +02:00 committed by GitHub
parent 8ea303e027
commit aad1892ab5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -575,6 +575,7 @@ impl LocalSet {
run_until.await
}
#[track_caller]
pub(in crate::task) fn spawn_named<F>(
&self,
future: F,