Fix race condition where PackageRev CRs are incorrectly deleted #4032
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.
We have seen issues where the
PackageRev
CR that should exist for every PackageRevision suddenly doesn't exist when a PackageRevision is being published. The reason this happens is a race condition between the logic that pushes new refs to the git repository and then updates the internal PackageRevision cache, and the background job that syncs PackageRevisions from git.If the background job end up running after the new git refs has been pushed, but before the internal cache is updated with the revision assigned to the PackageRevision, the background job is not able to find a PackageRevision in git that matches the PackageRevision key. This is because the PackageRevisions found in git are published and therefore have an assigned revision, while the corresponding PackageRevision in the cache has not been updated with the revision yet.
This fixes this issue by switching the background job to match PackageRevisions based on the kubernetes object name (which doesn't change when a PackageRevision is published), rather than the PackageRevision key.