-
Notifications
You must be signed in to change notification settings - Fork 57
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Constant reconciliation due to changing error message on CRD validation #1456
Comments
I can look into it |
This is what I have been able to find so far, using the provided argocd clusterextension example and reproduction steps: Random orderThe main issue with random ordering comes directly from the way the As you can see here: https://github.com/carvel-dev/kapp/blob/develop/pkg/kapp/crdupgradesafety/change_validator.go#L452 This means that when validating the example argocd manifests for 0.6.0 version, we get three errors as output, with each one being a multi-line string that can have its lines returned in any order, effectively making it a "different error" with each variation:
CustomResourceDefinition argocds.argoproj.io failed upgrade safety validation. "ChangeValidator" validation failed: And returns the following error (all of the below is a single error) version "v1alpha1", field "^.status.dex" has unknown change, refusing to determine that change is safe
version "v1alpha1", field "^.status.repo" has unknown change, refusing to determine that change is safe
version "v1alpha1", field "^.status.ssoConfig" has unknown change, refusing to determine that change is safe
version "v1alpha1", field "^.status.redis" has unknown change, refusing to determine that change is safe
version "v1alpha1", field "^.status.notificationsController" has unknown change, refusing to determine that change is safe
version "v1alpha1", field "^.status.phase" has unknown change, refusing to determine that change is safe
version "v1alpha1", field "^.status.server" has unknown change, refusing to determine that change is safe
version "v1alpha1", field "^.status.applicationController" has unknown change, refusing to determine that change is safe
version "v1alpha1", field "^.spec.generators[*].matrix.generators" has unknown change, refusing to determine that change is safe
version "v1alpha1", field "^.spec.generators" has unknown change, refusing to determine that change is safe
version "v1alpha1", field "^.spec.generators[*].merge.generators" has unknown change, refusing to determine that change is safe
version "v1alpha1", field "^.status.history" has unknown change, refusing to determine that change is safe" ReconciliationsThe above random order indeed causes unnecessary attempts to reconcile the status of failed clusterextensions, by forcing the call to FixI'm currently looking into how best to approach fixing it. Ensuring order directly upstream seems like the best idea imho, otherwise we would have split - (re)order - rejoin messages we're getting with an assumption of a specific separator being used (newline). |
Update on the fix: I created and linked to upstream PR. Once this is merged, besides bumping |
Steps to reproduce
argocd-operator
of version0.5.0
fromoperatorhubio
catalog.Result
Error message seems to be ordered differently on each reconciliation which probably results in useless reconciliation runs.
E.g. I see the condition alternating few variations such as:
Expected result
The text was updated successfully, but these errors were encountered: