fix: use static tokio runtime to prevent shutdown during sync #4044
+11
−6
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #4040.
Problem
The
rt()function creates a new Tokio runtime on each call, returns itsHandle, and immediately drops the runtime. This causes panics during sync operations:Solution
Use
OnceLockto create a single static runtime that lives for the program's lifetime. Also useenable_all()to enable both time and IO features needed for sync operations.Changes
Note: PR #4042 adds
.enable_time()which addresses the "timers are disabled" error but doesn't fix the underlying runtime lifetime issue.