Allow deactivation to be triggered during activation, clean up deactivation flow #9116
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.
This PR cleans up activation lifecycle around shutdown, removing some duplication and improving hygiene around cancellation.
It enables deactivation to be triggered while a grain is still activating, eliminating the
"Calling DeactivateOnIdle from within OnActivateAsync is not supported"
message. When deactivation is triggered, theCancellationToken
passed to the ongoingOnActivateAsync
will be canceled.This PR also fixes a possible
NullReferenceException
when a silo is shutting down ungracefully and a grain is disposed without first being deactivated, which can happen during ungraceful shutdown.Microsoft Reviewers: Open in CodeFlow