fix(pvc-reconciler): scope PVC update diff check to patchable fields - #326
Merged
Conversation
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
force-pushed
the
feat/pvc-fake-reconciles
branch
2 times, most recently
from
September 7, 2026 09:08
68184e6 to
3f0e843
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
Checklist