fix: Handle ArgoCD ComparisonError with automatic hard refresh #211
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.
Summary
FIX: Detect and automatically handle ArgoCD ComparisonError with hard refresh to resolve cache corruption.
Problem
ArgoCD deployments fail with
Unknownsync status when the repo cache is corrupted, causing ComparisonError.Error Example: https://github.com/monta-app/service-grid-data/actions/runs/21033316677/job/60475088418
Error Message:
Root Cause: ArgoCD's repo cache becomes corrupted and references files from wrong applications, causing manifest generation to fail. This makes the sync status
Unknownand deployments fail after 30s.Solution
This PR improves error handling to automatically recover from ComparisonError:
status.conditions[]arrayChanges
wait-sync.sh
New ComparisonError handling:
How Hard Refresh Works
argocd app get --hard-refreshforces ArgoCD to:This typically resolves cache corruption issues without manual intervention.
Impact
✅ Automatic recovery - ComparisonError resolved automatically via hard refresh
✅ Better error messages - Clear indication when ComparisonError is detected
✅ Extended timeout - 60s for ComparisonError gives time for recovery
✅ No breaking changes - Existing behavior preserved for other Unknown states
Testing
After merge, deployments encountering ComparisonError will:
🤖 Generated with Claude Code