fix: add ref counting for reliable prefix lifecycle management #775
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.
What kind of change does this PR introduce?
Bug fix
What is the current behavior?
Prefixes are handled via triggers that have to check the object table to determine if prefixes should be removed. This can cause "orphan prefixes" to be left behind under heavy concurrency
What is the new behavior?
Maintain child ref counts in the prefixes table using statement level triggers
Implementation details
Prefix ref counting
child_objects
andchild_prefixes
columns for reference countingPrefix ref backfill
DOES NOT check for / fix missing prefixes. This would be an expensive operation for projects with a large number of objects as it would require a full scan of the objects table, and there is no known issue with missing prefixes (only orphan prefixes)