Skip to content

fix(pvc-reconciler): scope PVC update diff check to patchable fields - #326

Merged
azun merged 1 commit into
masterfrom
feat/pvc-fake-reconciles
Sep 8, 2026
Merged

fix(pvc-reconciler): scope PVC update diff check to patchable fields#326
azun merged 1 commit into
masterfrom
feat/pvc-fake-reconciles

Conversation

@azun

@azun azun commented Aug 27, 2026

Copy link
Copy Markdown

Description

Previously reconcileKafkaPvc computed the effective desired PVC (current PVC with only resource requests and labels overlaid) after already calling CheckIfObjectUpdated against the full, unscoped desired object. This meant the update decision could be driven by fields that are never actually sent in the update, causing spurious diffs/updates unrelated to the real patchable state. Compute the scoped desired object first so the diff check and the subsequent update operate on the same object.

"kind" values was added to the log context for each PVC in the iteration, resulting in dupliacat entries for an event.

Moved IgnoreMetadataFields into the vendored k8s-objectmatcher patch package

Type of Change

  • Bug Fix
  • New Feature
  • Breaking Change
  • Refactor
  • Documentation
  • Other (please describe)

Checklist

  • I have read the contributing guidelines
  • Existing issues have been referenced (where applicable)
  • I have verified this change is not present in other open pull requests
  • Functionality is documented
  • All code style checks pass
  • New code contribution is covered by automated tests
  • All new and existing tests pass

@azun
azun marked this pull request as ready for review August 27, 2026 19:04
amuraru added a commit to amuraru/koperator that referenced this pull request Aug 28, 2026
…s wait

The final "cluster healthy"/"no deadlock" assertions in the multi-disk
removal and config-change+disk-removal e2e scenarios waited on
kafkaClusterResourceReadinessTimeout (300s), while every other step in
the same scenarios already uses the scenario's own 1800s budget because
a disk-removal-driven rolling restart across all brokers (fresh PVC
provisioning included) can legitimately take longer than 5 minutes
under CI load. Observed on adobe#325 and adobe#326: both failed
with the exact same "timeout waiting for KafkaCluster ... after 5m0s"
symptom at this one under-budgeted step, on otherwise unrelated PRs,
while the preceding disk-removal/CC-quiescence checks (already on the
1800s budget) passed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
amuraru added a commit that referenced this pull request Aug 28, 2026
…#325)

* fix(cruisecontrol): re-validate remove_disks log dirs before retrying

OperationRemoveDisks retries replayed a brokerid_and_logdirs snapshot frozen
at creation time; if Cruise Control's view diverged (e.g. restart mid-race),
the identical invalid request retried forever. Skip stale retries until
Cruise Control's current state agrees with the snapshot again.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* test(e2e): use scenario timeout budget for post-disk-removal readiness wait

The final "cluster healthy"/"no deadlock" assertions in the multi-disk
removal and config-change+disk-removal e2e scenarios waited on
kafkaClusterResourceReadinessTimeout (300s), while every other step in
the same scenarios already uses the scenario's own 1800s budget because
a disk-removal-driven rolling restart across all brokers (fresh PVC
provisioning included) can legitimately take longer than 5 minutes
under CI load. Observed on #325 and #326: both failed
with the exact same "timeout waiting for KafkaCluster ... after 5m0s"
symptom at this one under-budgeted step, on otherwise unrelated PRs,
while the preceding disk-removal/CC-quiescence checks (already on the
1800s budget) passed.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Previously reconcileKafkaPvc computed the effective desired PVC
(current PVC with only resource requests and labels overlaid) after
already calling CheckIfObjectUpdated against the full, unscoped
desired object. This meant the update decision could be driven by
fields that are never actually sent in the update, causing spurious
diffs/updates unrelated to the real patchable state. Compute the
scoped desired object first so the diff check and the subsequent
update operate on the same object.

"kind" values was added to the log context for each PVC in the iteration,
resulting in dupliacat entries for an event.

Moved IgnoreMetadataFields into the vendored k8s-objectmatcher patch
package
@azun
azun force-pushed the feat/pvc-fake-reconciles branch 2 times, most recently from 68184e6 to 3f0e843 Compare September 7, 2026 09:08
@azun
azun merged commit 92558e9 into master Sep 8, 2026
7 checks passed
@azun
azun deleted the feat/pvc-fake-reconciles branch September 8, 2026 08:01
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