Files
Asish Kumar 5664912a4c Feat: support per-application reconciliation interval override via annotation (#7089)
* Feat: support per-application reconciliation interval override via annotation

Add the app.oam.dev/reconcile-interval annotation that lets operators
override the global ApplicationReSyncPeriod on a per-application basis.
This is useful when different applications have different drift-detection
needs: a production app might need reconciliation every minute while a
dev/staging app can safely use a longer interval to reduce API server load.

When the annotation is present and contains a valid Go duration string
(e.g. "1m", "15m", "30s") at or above the 10s minimum floor, the
controller uses that value as RequeueAfter instead of the global default.
Invalid or below-minimum values are logged as warnings and silently fall
back to the global default, preserving full backward compatibility.

The implementation adds a forApp() chain method to reconcileResult so that
only the return paths where the default resync period matters (normal
completion and error recovery) need to be annotated, leaving all explicit
requeue() calls untouched.

Signed-off-by: Asish Kumar <officialasishkumar@gmail.com>

* test: add e2e coverage for app reconcile interval

Signed-off-by: Asish Kumar <officialasishkumar@gmail.com>

* chore: trigger ci rerun

Signed-off-by: Asish Kumar <officialasishkumar@gmail.com>

* fix: address reconcile interval review feedback

Signed-off-by: Asish Kumar <officialasishkumar@gmail.com>

* fix: satisfy reconcile interval lint

Signed-off-by: Asish Kumar <officialasishkumar@gmail.com>

---------

Signed-off-by: Asish Kumar <officialasishkumar@gmail.com>
2026-05-05 14:24:33 -07:00
..