Open billyshambrook opened 1 year ago
We also observed a similar issue. After debugging the code we found a possible culprit here: https://github.com/argoproj/argo-cd/blob/master/applicationset/controllers/applicationset_controller.go#L1023 App Status is stuck in "pending" even though the sync was successful. The operationPhaseString is "Succeeded" therefore an update to the status is never performed. Possible fix there would be to check for (operationPhaseString == "Succeeded" && !appOutdated). Don't know if this relates to your issue as we did not check the ApplicationSetStatus.
@crenshaw-dev please add label appset/progressive-rollouts. Thanks.
same happens on 2.7.1
Same on 2.8
any updates on this issue?
Hi - does anyone have any insights on this one?
I can only say that I still have the problem with 2.10.4.
Has anyone found a workaround for this one?
I notice this too:
- lastTransitionTime: "2024-03-22T13:01:35Z"
message: Successfully generated parameters for all Applications
reason: ApplicationSetUpToDate
status: "False"
type: ErrorOccurred
Meanwhile these errors pop-up in the appset controller:
time="2024-03-22T13:07:17Z" level=error msg="unable to set application set status: Operation cannot be fulfilled on applicationsets.argoproj.io \"argocd\": the object has been modified; please apply your changes to the latest version and try again" applicationset=argocd/argocd
The latter seems unrelated to the initial issue logged here but it is interesting to see that the progressive rollout also has issues with ArgoCD being managed by the progressive rollout.
I also have this issue on 2.10.4
I believe @carlosrejano added some retries that might fix that in https://github.com/argoproj/argo-cd/issues/19535.
What worries me is that from my outsider perspective, an application status in the applicationset should always be able to move forward based on the real application statuses, it should not get stuck in a state based on its stored status.
It seems like some re-work is needed of the pseudo state machine but I have a hard time to grasp all the logic š
Allright after some more digging I believe the logic I was talking about was rewritten in https://github.com/argoproj/argo-cd/pull/17296 released in v2.12. There is also a reconciliation issue in v2.12 that will be cherry picked and released soon, I believe, via https://github.com/argoproj/argo-cd/pull/19995.
I'm currently running a custom version with the cherry pick and it seems to work so far. The only caveat is that the applications that were stuck in "Pending" were not moved automatically, I had to patch the status to "Progressing" myself but after that, no more problems appeared.
There still seems to be potential "stuck in pending" problems mentioned in https://github.com/argoproj/argo-cd/issues/19535 though with consecutive commits during a rolling sync.
Checklist:
argocd version
.Describe the bug
A progressive rollout enabled ApplicationSet sometimes get's stuck between rollout steps.
Not sure if this is related, but I have noticed that the applicationset conditions seem to continuously flip between the following, seems like the controller does not append these but keeps overwriting itself:
After inspecting the code, it seems to be caused by the controller calling
r.setApplicationSetStatusCondition
here https://github.com/argoproj/argo-cd/blob/master/applicationset/controllers/applicationset_controller.go#L1154 with theparamtersGenerated
argument set tofalse
and then the controller within the same reconcile calls the function again here (maybe) https://github.com/argoproj/argo-cd/blob/master/applicationset/controllers/applicationset_controller.go#L277 with theparametersGenerated
set totrue
which overwrites the progressive condition.To Reproduce
Apply this applicationset.yaml. If the applicationset rollout works, try deleting the applicationset and re-applying it a few times.
Expected behavior
All applications rollout successfully.
Screenshots
Version