Skip to content

Fix infinite reconcile loop when Istio version is EOL#1690

Merged
istio-testing merged 2 commits intoistio-ecosystem:mainfrom
sridhargaddam:issue-1689
Mar 13, 2026
Merged

Fix infinite reconcile loop when Istio version is EOL#1690
istio-testing merged 2 commits intoistio-ecosystem:mainfrom
sridhargaddam:issue-1689

Conversation

@sridhargaddam
Copy link
Copy Markdown
Contributor

@sridhargaddam sridhargaddam commented Mar 13, 2026

When an EOL version is specified in the Istio CR, the Resolve() method returned a plain error. controller-runtime treated this as a retriable failure and kept reconciling with exponential backoff, resulting in an endless loop with "Reconciler error" logs.

This PR fixes makes the following changes to the code.

  1. Added IsEOLVersion() to report a proper message in status conditions.
  2. Wraps EOL errors as ValidationError and updates the Istio, IstioCNI and ZTunnel controllers. StandardReconciler already treats ValidationError as non-retriable, so it logs once and stops reconciling until the resource is updated.

Fixes: #1689

When an EOL version is specified in the Istio CR, the Resolve()
method returned a plain error. controller-runtime treated this
as a retriable failure and kept reconciling with exponential
backoff, resulting in an endless loop with "Reconciler error" logs.

This PR fixes makes the following changes to the code.

1. Added IsEOLVersion() report a proper message in status conditions.
2. Wraps EOL errors as ValidationError and updates the Istio, IstioCNI
   and ZTunnel controllers. StandardReconciler already treats ValidationError
   as non-retriable, so it logs once and stops reconciling until the resource
   is updated.

Signed-off-by: Sridhar Gaddam <sgaddam@redhat.com>
Fixes: istio-ecosystem#1689
@sridhargaddam sridhargaddam requested a review from a team as a code owner March 13, 2026 11:45
@codecov
Copy link
Copy Markdown

codecov bot commented Mar 13, 2026

Codecov Report

❌ Patch coverage is 63.63636% with 4 lines in your changes missing coverage. Please review.
✅ Project coverage is 81.16%. Comparing base (4564c26) to head (ebba6c0).
⚠️ Report is 6 commits behind head on main.

Files with missing lines Patch % Lines
pkg/reconcile/cni.go 0.00% 2 Missing ⚠️
pkg/reconcile/ztunnel.go 0.00% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1690      +/-   ##
==========================================
+ Coverage   80.87%   81.16%   +0.28%     
==========================================
  Files          50       50              
  Lines        2479     2490      +11     
==========================================
+ Hits         2005     2021      +16     
+ Misses        349      347       -2     
+ Partials      125      122       -3     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Copy Markdown
Collaborator

@dgn dgn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @sridhargaddam, this LGTM. Can you adjust the failing integration test so that instead of checking for the specific error, it verifies that no reconcile loop is taking place?

Signed-off-by: Sridhar Gaddam <sgaddam@redhat.com>
@sridhargaddam sridhargaddam requested a review from dgn March 13, 2026 14:41
@istio-testing istio-testing merged commit f48129d into istio-ecosystem:main Mar 13, 2026
15 of 17 checks passed
openshift-service-mesh-bot pushed a commit to openshift-service-mesh-bot/sail-operator that referenced this pull request Mar 16, 2026
* upstream/main:
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1693)
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1691)
  Fix infinite reconcile loop when Istio version is EOL (istio-ecosystem#1690)
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1688)
  Give agents instructions on finalizing a change. (istio-ecosystem#1653)
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1685)
  fix: write correct helm value for FIPS-140-2 support (istio-ecosystem#1681)
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1672)
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1668)
  Fix missing MaxConcurrentReconciles in ZTunnel controller (istio-ecosystem#1661)
openshift-service-mesh-bot pushed a commit to openshift-service-mesh-bot/sail-operator that referenced this pull request Mar 17, 2026
* upstream/main:
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1696)
  Fix commit check workflow to only check the first PR commit (istio-ecosystem#1692)
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1693)
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1691)
  Fix infinite reconcile loop when Istio version is EOL (istio-ecosystem#1690)
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1688)
  Give agents instructions on finalizing a change. (istio-ecosystem#1653)
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1685)
  fix: write correct helm value for FIPS-140-2 support (istio-ecosystem#1681)
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1672)
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1668)
  Fix missing MaxConcurrentReconciles in ZTunnel controller (istio-ecosystem#1661)
@sridhargaddam
Copy link
Copy Markdown
Contributor Author

@team, shall we backport this fix to release branches?

@FilipB
Copy link
Copy Markdown
Collaborator

FilipB commented Mar 18, 2026

I would say we should. At least to the latest release branch. Adding the label. I don't think we need this in downstream as we don't use EOL there so we probably don't need it in older releases.

@istio-testing
Copy link
Copy Markdown
Collaborator

In response to a cherrypick label: new pull request created: #1709

openshift-service-mesh-bot pushed a commit to openshift-service-mesh-bot/sail-operator that referenced this pull request Mar 18, 2026
* upstream/main:
  Adding FIPS_CLUSTER variable to E2E test (istio-ecosystem#1698)
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1696)
  Fix commit check workflow to only check the first PR commit (istio-ecosystem#1692)
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1693)
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1691)
  Fix infinite reconcile loop when Istio version is EOL (istio-ecosystem#1690)
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1688)
  Give agents instructions on finalizing a change. (istio-ecosystem#1653)
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1685)
  fix: write correct helm value for FIPS-140-2 support (istio-ecosystem#1681)
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1672)
  Automator: Update dependencies in istio-ecosystem/sail-operator@main (istio-ecosystem#1668)
  Fix missing MaxConcurrentReconciles in ZTunnel controller (istio-ecosystem#1661)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Infinite reconcile loop when an EOL version is specified in the Istio CR

4 participants