Do not modify the informer cache objects in resource.AnnotationChangedPredicate.Update #561
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.
Description of your changes
Fixes #560
This PR proposes a change in the implementation of the
resource.AnnotationChangedPredicate.Update
function so that we no longer modify themetadata.annotations
of the underlying informer cache object when the predicate is run. There's a race between this predicate and the managed reconciler when the managed reconciler tries to fetch the object from the informer cache.I have:
make reviewable test
to ensure this PR is ready for review.How has this code been tested
We have built an AWS provider image by updating the crossplane-runtime module dependency:
index.docker.io/ulucinar/provider-aws-iam:v0.40.0-2f7af2124115916c53aa5f3df8c3ac53e28702fa
,and we have not been able to reproduce the data race on
metadata.annotations
with the packages containing this fix.