fix: handle component deletion when parent cluster is missing#18
Merged
zijiren233 merged 1 commit intoMar 10, 2026
Merged
Conversation
zijiren233
requested changes
Mar 10, 2026
When the parent Cluster is deleted before Component, the component controller was returning an error because it couldn't find the cluster. This fix returns a placeholder cluster with default Delete termination policy when the cluster is not found, allowing the component deletion to proceed normally.
50df1a2 to
6cb5ade
Compare
zijiren233
approved these changes
Mar 10, 2026
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.
When a Cluster is deleted but its owned Components still exist, the Component controller fails to complete the deletion process. The getCluster method returns an error when the parent Cluster is not found, causing the component deletion transformer to enter an infinite requeue loop.
Root Cause
In transformer_component_deletion.go, the getCluster function fetches the parent Cluster to determine the
TerminationPolicyfor resource cleanup. When the Cluster has already been garbage collected, the Get call returns aNotFounderror which is propagated as a generic error, preventing the deletion flow from proceeding.Solution
Added an
apierrors.IsNotFoundcheck in getCluster. When the Cluster is not found, a placeholder Cluster object with a default Delete termination policy is returned, allowing the component deletion to proceed with sub-resource cleanup.Changes
NotFounderror in getCluster by returning a placeholder Cluster withTerminationPolicy: Delete.Verification
go test ./controllers/apps/... -run "deletion transformer" -v