fix(rivetkit-core): defer teardown_started until drain settles#4836
Draft
NathanFlurry wants to merge 1 commit intodriver-tests-fixes/sleep-cleanup-testsfrom
Draft
Conversation
|
🚅 Deployed to the rivet-pr-4836 environment in rivet-frontend
|
This was referenced Apr 28, 2026
Member
Author
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
Contributor
Preview packages published to npmInstall with: npm install rivetkit@pr-4836All packages published as Engine binary is shipped via Docker images: docker pull rivetdev/engine:slim-ca70b4c
docker pull rivetdev/engine:full-ca70b4cIndividual packagesnpm install rivetkit@pr-4836
npm install @rivetkit/react@pr-4836
npm install @rivetkit/rivetkit-napi@pr-4836
npm install @rivetkit/workflow-engine@pr-4836 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.

Stack Context
This stack fixes actor sleep driver-test failures around work registered during shutdown grace and a deprecated fixture sleep hold.
Why?
teardown_sleep_state()setteardown_startedbefore draining accepted shutdown tasks, so nestedwaitUntilwork registered while the drain was active could be refused. It also relied on task-count changes without waking the actor grace loop, which could leave shutdown waiting until the grace deadline.What?
This PR wakes the grace loop when shutdown tasks are registered or finish, drains accepted tasks until the join set settles before setting
teardown_started, and keeps the deadline path as aborting cleanup by marking when the grace deadline was reached.Validation
cargo test -p rivetkit-core sleep_shutdown_waits_for_keep_awake_work_then_finishes_next_tickcargo test -p rivetkit-core ctx_wait_until_during_finish_shutdown_cleanup_refused_without_leakcargo test -p rivetkit-core destroy_shutdown_concurrent_wait_until_refusedcargo test -p rivetkit-core destroy_shutdown_times_out_at_deadline_and_aborts_stuck_shutdown_taskcargo test -p rivetkit-core keep_awake_region_blocks_sleep_idle_until_guard_dropscargo test -p rivetkit-core nested_wait_until_during_grace_is_drainedcargo test -p rivetkit-core keep_awake_in_on_sleep_blocks_finalize_until_releasedpnpm build:forcepnpm test tests/driver/actor-sleep-db.test.ts -t "static registry.*encoding \\(bare\\).*nested waitUntil inside waitUntil"