Skip to content

fix(engine): reset thrashing state when user removes reconcile-paused annotation#218

Open
tiraboschi wants to merge 1 commit into
openshift-virtualization:mainfrom
tiraboschi:CNV-89796
Open

fix(engine): reset thrashing state when user removes reconcile-paused annotation#218
tiraboschi wants to merge 1 commit into
openshift-virtualization:mainfrom
tiraboschi:CNV-89796

Conversation

@tiraboschi

Copy link
Copy Markdown
Member

When a user removes the platform.kubevirt.io/reconcile-paused annotation to resume reconciliation, the in-memory ThrashingDetector state (consecutiveThrottles >= ThrashingThreshold) was never cleared.

If the token bucket was still empty at that point (< 6 s after the pause was set), the very next throttled reconciliation immediately re-paused the resource, making it permanently stuck.

Add Step 1.6 in ReconcileAsset: after the IsPaused guard returns false, check whether consecutiveThrottles has already reached the threshold. If so the operator previously set the annotation and the user just removed it, so reset the thrashing detector for that resource. Subsequent throttles now count from 0 and will not re-trigger a pause until a genuine new edit war accumulates enough consecutive throttles.

Fixes: CNV-89796

@openshift-ci

openshift-ci Bot commented Jun 16, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign dominikholler for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@github-actions

Copy link
Copy Markdown
Contributor

Generated Files Verification Failed

One or more generated files in this PR are out of sync:

  • CRDs: Run make update-crds if CRD verification failed
  • RBAC: Run make generate-rbac if RBAC verification failed

Please regenerate the files locally and commit the changes.

… annotation

When a user removes the platform.kubevirt.io/reconcile-paused annotation
to resume reconciliation, the in-memory ThrashingDetector state
(consecutiveThrottles >= ThrashingThreshold) was never cleared.

If the token bucket was still empty at that point (< 6 s after the pause
was set), the very next throttled reconciliation immediately re-paused the
resource, making it permanently stuck.

Add Step 1.6 in ReconcileAsset: after the IsPaused guard returns false,
check whether consecutiveThrottles has already reached the threshold.
If so the operator previously set the annotation and the user just removed
it, so reset the thrashing detector for that resource. Subsequent throttles
now count from 0 and will not re-trigger a pause until a genuine new edit
war accumulates enough consecutive throttles.

Fixes: CNV-89796

Signed-off-by: Simone Tiraboschi <stirabos@redhat.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant