ArgoCD

Unnecessary Reconciliation from Mono-Repo Change Amplification

warning
scalingUpdated Aug 8, 2025

ArgoCD invalidates manifest cache for all applications when any commit occurs in a shared mono-repo, causing thousands of applications to reconcile unnecessarily and overwhelming the repo-server.

How to detect:

Monitor argocd_repo_server_render_duration_seconds spikes correlating with Git commits. When repo-server CPU and argocd_repo_server_repo_pending_request both spike after commits affecting only a few apps, cache invalidation is too broad. Check for many applications sharing the same repoURL with different paths.

Recommended action:

Add argocd.argoproj.io/manifest-generate-paths annotation to each Application specifying which directories trigger reconciliation (e.g., '.;../shared'). This tells ArgoCD to compare changed files from webhook payloads with application paths and skip reconciliation for unaffected apps. Long-term: split mono-repos into smaller repositories organized by team ownership (15 repos with ~20 services each instead of one repo with 300).