Fix block cleanup for blocks with no affinity type - #11179
Merged
caseydavenport merged 5 commits intoOct 15, 2025
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull Request Overview
This PR fixes an issue where block cleanup operations fail for older IPAM blocks that were created without an explicit affinity type field. The fix ensures backward compatibility by defaulting the AffinityType to "host" when reading blocks that don't have this field set.
- Adds defaulting logic in the Kubernetes backend to set AffinityType to "host" for blocks missing this field
- Improves error logging format in block affinity release operations
- Adds comprehensive test coverage for the backward compatibility scenario
Reviewed Changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| libcalico-go/lib/backend/k8s/resources/ipam_affinity.go | Adds defaulting logic to set AffinityType to "host" for older blocks without this field |
| libcalico-go/lib/ipam/ipam.go | Refactors loop variables to use range syntax for clarity |
| libcalico-go/lib/ipam/ipam_block_reader_writer.go | Improves error message formatting in block affinity mismatch logging |
| libcalico-go/lib/ipam/ipam_test.go | Adds test case verifying block cleanup works for older blocks without affinity type |
MichalFupso
reviewed
Oct 15, 2025
MichalFupso
approved these changes
Oct 15, 2025
This reverts commit 47cf5c4.
gojoy
added a commit
to gojoy/calico
that referenced
this pull request
Oct 16, 2025
(cherry picked from commit e95ae9f) Signed-off-by: GitHub <noreply@github.com>
caseydavenport
pushed a commit
that referenced
this pull request
Oct 16, 2025
sabags
pushed a commit
to sabags/calico
that referenced
this pull request
Dec 1, 2025
* Fix block cleanup for blocks with no affinity type * use constant * Revert "use constant" This reverts commit 47cf5c4.
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
Fixes #11175
We need to default the AffinityType field on read, as older blocks don't have this field set
and the newer IPAM code expects it to be.
etcd doesn't need a corresponding fix, as the affinity type was already part of the key even
before the AffnityType field was added to our API.
Related issues/PRs
Todos
Release Note
Reminder for the reviewer
Make sure that this PR has the correct labels and milestone set.
Every PR needs one
docs-*label.docs-pr-required: This change requires a change to the documentation that has not been completed yet.docs-completed: This change has all necessary documentation completed.docs-not-required: This change has no user-facing impact and requires no docs.Every PR needs one
release-note-*label.release-note-required: This PR has user-facing changes. Most PRs should have this label.release-note-not-required: This PR has no user-facing changes.Other optional labels:
cherry-pick-candidate: This PR should be cherry-picked to an earlier release. For bug fixes only.needs-operator-pr: This PR is related to install and requires a corresponding change to the operator.