fix:return evaluation errors from processAllNodesForRule#237
fix:return evaluation errors from processAllNodesForRule#237dorodb-web22 wants to merge 2 commits into
Conversation
✅ Deploy Preview for node-readiness-controller canceled.
|
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: dorodb-web22 The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
Hi @dorodb-web22. Thanks for your PR. I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with Regular contributors should join the org to skip this step. Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
|
/ok-to-test |
AvineshTripathi
left a comment
There was a problem hiding this comment.
cc @ajaysundark wdyt about this
|
|
||
| log.Info("Completed processing nodes for rule", "rule", rule.Name, "processedCount", len(appliedNodes)) | ||
| return nil | ||
| return errors.Join(errs...) |
There was a problem hiding this comment.
the early return was skipping updateRuleStatus and cleanupDeletedNodes. i ffixed by saving the error, letting status update complete, then returning the error at the end to trigger requeue.
|
/assign |
513df2b to
7348a02
Compare
| if r.ruleAppliesTo(ctx, rule, &node) { | ||
| appliedNodes = append(appliedNodes, node.Name) | ||
| log.Info("Processing node for rule", "rule", rule.Name, "node", node.Name) | ||
| if err := r.evaluateRuleForNode(ctx, rule, &node); err != nil { |
There was a problem hiding this comment.
Can you add a test case for this where evaluateRuleForNode returns an error?
|
|
||
| log.Info("Completed processing nodes for rule", "rule", rule.Name, "processedCount", len(appliedNodes)) | ||
| return nil | ||
| return errors.Join(errs...) |
There was a problem hiding this comment.
requeue on transient errors like API conflicts or patch failures.
can you also add unit tests to capture these gaps that this PR aims to address?
|
|
||
| // processAllNodesForRule processes all nodes when a rule changes. | ||
| // | ||
| //nolint:unparam // Keep error return for future extensibility and API stability. |
There was a problem hiding this comment.
Can we remove this comment as it is no longer true?
|
@dorodb-web22 Thanks for your PR, Could you rebase and address the test failures? |
|
PR needs rebase. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
|
/lgtm Please rebase |
Description
processAllNodesForRulewas catching errors fromevaluateRuleForNodebut always returningnil. This preventedRuleReconciler.Reconcilefrom seeing any failures, so controller-runtime never triggered a requeue on transient errors like API conflicts or patch failures.This fix accumulates errors across the node loop and returns them via
errors.Join, using the same pattern applied toprocessNodeAgainstAllRulesin #222. The existing behavior of continuing evaluation across all nodes is preserved.Related Issue
Fixes #234
Type of Change
/kind bug
Testing
make test
make lint
Checklist
make testpassesmake lintpassesDoes this PR introduce a user-facing change?