Skip to content

fix(controller): only send status updates when the status changed - #557

Open
tomba7 wants to merge 1 commit into
mainfrom
tomba/fix-unconditional-status-updates
Open

fix(controller): only send status updates when the status changed#557
tomba7 wants to merge 1 commit into
mainfrom
tomba/fix-unconditional-status-updates

Conversation

@tomba7

@tomba7 tomba7 commented Aug 29, 2026

Copy link
Copy Markdown
Collaborator

Part 2 of #415

What was changed

Reconcile now snapshots the status it read from the API server and compares the recomputed status against it before writing. If it is semantically identical, the status is not sent.

Why?

Every reconcile rebuilds the whole status and writes it unconditionally, then requeues after 10s (requeue interval). For a settled WorkerDeployment the recomputed status at each reconcile pass is identical and each WorkerDeployment sends 6 status updates a minute that the API server has to process and then discard. This gets amplified at scale (100 WDs = 10 write RPS which carry no new information)

The scope of this fix is the status write at the end of Reconcile, as it runs for every WorkerDeployment on every pass and carries effectively all of the redundant volume. The other status writes are left alone deliberately. For example, the blocked conditions path reflects error scenarios where the controller cannot make progress and are expected to be written.

Unit Testing

  • Verifies that once the rollout settles, a reconcile that recomputes the same status does not send it back to the API server.
  • Verifies that once the rollout settles, a change that makes the status differ again is still written to the API server.
  • go test ./... passes.

@tomba7
tomba7 requested review from a team, eniko-dif and jlegrone as code owners August 29, 2026 02:23
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