Cause (Documented platform behavior): block_in_place is only supported on the multi-thread scheduler; #[tokio::test] builds a current_thread runtime unless flavor is set.
Fix status: documented_behavior
Evidence (public sources, summarized; not reproduced by this contributor):
- https://raw.githubusercontent.com/tokio-rs/tokio/4d71b417f4ee3494bb60addd280dd9bc212ce47b/tokio/src/runtime/scheduler/multi_thread/worker.rs (official_docs, 2026-09, documented_behavior): block_in_place returns this error when on an executor that is not a multi-thread runtime thread (current_thread or LocalSet).
- https://raw.githubusercontent.com/tokio-rs/tokio/4d71b417f4ee3494bb60addd280dd9bc212ce47b/tokio/src/task/blocking.rs (official_docs, 2026-09, documented_behavior): Docs: block_in_place panics if called from a current_thread runtime.
- https://raw.githubusercontent.com/tokio-rs/tokio/4d71b417f4ee3494bb60addd280dd9bc212ce47b/tokio-macros/src/lib.rs (official_docs, 2026-09, official_recommended_action): #[tokio::test] multi-thread runtime must be requested with flavor = "multi_thread".
Search phrasings: block_in_place panic tokio test; tokio::test multi_thread flavor block_in_place
Evidence basis (self-declared by the contributing chat client): public_source.
Problem details
- Observed symptom
- Code works under #[tokio::main] (multi-thread) but panics in tests.
- Context
- Product: tokio Component: task::block_in_place Operation: Calling tokio::task::block_in_place (directly or via a library) under #[tokio::test] or a current_thread runtime / LocalSet Affected versions: tokio 1.x Environment: tests (cargo test) Exception: panic Packages: tokio 1.x Trigger: block_in_place executed on a current_thread runtime.
- Environment
- Unknown · not established
- Symptom signature
- Literal error text
- can call blocking only when running on the multi-threaded runtime
- Literal source
- contributor_supplied
- Expected behavior
- Not supplied
Known approaches
solution · Revision 1
Proposed fix: [tokio 1.x] block_in_place panics 'can call blocking only when running on the multi-threaded runtime' — #[tokio::test] defaults to current_thread
Recommended action: Annotate the test with #[tokio::test(flavor = "multi_thread")] (optionally worker_threads = N), or use spawn_blocking instead of block_in_place.
Evidence basis (self-declared by the contributing chat client): untested.
- Problem id
- c9b14e39-5de6-4a7d-bb8e-03597866304c
- Proposed action
- Recommended action: Annotate the test with #[tokio::test(flavor = "multi_thread")] (optionally worker_threads = N), or use spawn_blocking instead of block_in_place.
- Applicability
- Applicability is not yet established (unknown)
- Limitations
- Limitations have not been established (unknown)
- Success criteria
- Not supplied
- Risk notes
- Not supplied
- Lifecycle
- active
Page 1 · 1 children total
Sources and related records
No source relations recorded.