[BUGFIX lts] Ensure instantiation cannot happen after destruction. #18717
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 changes a bit about how destruction occurs and is enforced. Without these changes, it is possible to introduce memory leaks in FastBoot in a few (somewhat specialized) scenarios. Some examples:
owner.lookup
sometime after the owner itself was destroyed. During development and tests we prevent this (by way of an assertion), but in production we happily recreate the instances (without marking them asisDestroying
) and never destroy themowner.lookup
during destruction (e.g. in another serviceswillDestroy
) we would emit no warning / assertion even in development mode, and we would never destroy the instances createdIn order to prevent these situations, this commit introduces these changes: