Skip to content

Fix block cleanup for blocks with no affinity type - #11179

Merged
caseydavenport merged 5 commits into
projectcalico:masterfrom
caseydavenport:casey-fix-missing-aff-type
Oct 15, 2025
Merged

Fix block cleanup for blocks with no affinity type#11179
caseydavenport merged 5 commits into
projectcalico:masterfrom
caseydavenport:casey-fix-missing-aff-type

Conversation

@caseydavenport

@caseydavenport caseydavenport commented Oct 13, 2025

Copy link
Copy Markdown
Member

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

  • Tests
  • Documentation
  • Release note

Release Note

Fix IPAM block leak of older blocks when deleting IP pools. 

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.

Copilot AI review requested due to automatic review settings October 13, 2025 17:21
@caseydavenport
caseydavenport requested a review from a team as a code owner October 13, 2025 17:21
@marvin-tigera marvin-tigera added this to the Calico v3.32.0 milestone Oct 13, 2025
@marvin-tigera marvin-tigera added release-note-required Change has user-facing impact (no matter how small) docs-pr-required Change is not yet documented labels Oct 13, 2025

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment thread libcalico-go/lib/ipam/ipam.go
Comment thread libcalico-go/lib/ipam/ipam.go
@caseydavenport caseydavenport added the docs-not-required Docs not required for this change label Oct 13, 2025
@marvin-tigera marvin-tigera removed the docs-pr-required Change is not yet documented label Oct 13, 2025
Comment thread libcalico-go/lib/backend/k8s/resources/ipam_affinity.go
@caseydavenport
caseydavenport merged commit e95ae9f into projectcalico:master Oct 15, 2025
3 checks passed
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
(cherry picked from commit e95ae9f)

Signed-off-by: GitHub <noreply@github.com>
@caseydavenport
caseydavenport deleted the casey-fix-missing-aff-type branch October 21, 2025 15:14
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs-not-required Docs not required for this change release-note-required Change has user-facing impact (no matter how small)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

IPAMBlocks Resource Leak After Upgrading v3.30.0

4 participants