Skip to content

fix: handle requestScaleLoop error in ScaledObject controller#7273

Merged
JorTurFer merged 3 commits into
kedacore:mainfrom
u-kai:fix/scaledobject-requestscaleloop-error
Dec 8, 2025
Merged

fix: handle requestScaleLoop error in ScaledObject controller#7273
JorTurFer merged 3 commits into
kedacore:mainfrom
u-kai:fix/scaledobject-requestscaleloop-error

Conversation

@u-kai

@u-kai u-kai commented Nov 29, 2025

Copy link
Copy Markdown
Contributor

Provide a description of what has been changed

This PR fixes a bug in the ScaledObject controller where the requestScaleLoop error was
being hidden by returning a different err variable instead of the actual error from
the failed function call.

Checklist

Fixes #
None

Relates to #
None

@keda-automation
keda-automation requested a review from a team November 29, 2025 06:20
@github-actions

Copy link
Copy Markdown

Thank you for your contribution! 🙏

Please understand that we will do our best to review your PR and give you feedback as soon as possible, but please bear with us if it takes a little longer as expected.

While you are waiting, make sure to:

  • Add an entry in our changelog in alphabetical order and link related issue
  • Update the documentation, if needed
  • Add unit & e2e tests for your changes
  • GitHub checks are passing
  • Is the DCO check failing? Here is how you can fix DCO issues

Once the initial tests are successful, a KEDA member will ensure that the e2e tests are run. Once the e2e tests have been successfully completed, the PR may be merged at a later date. Please be patient.

Learn more about our contribution guide.

@keda-automation
keda-automation requested a review from a team November 29, 2025 06:20
@snyk-io

snyk-io Bot commented Nov 29, 2025

Copy link
Copy Markdown

Snyk checks have passed. No issues have been found so far.

Status Scanner Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@u-kai
u-kai marked this pull request as ready for review November 29, 2025 06:31
@rickbrouwer

rickbrouwer commented Nov 29, 2025

Copy link
Copy Markdown
Member

/run-e2e internal
Update: You can check the progress here

@u-kai

u-kai commented Nov 30, 2025

Copy link
Copy Markdown
Contributor Author

@rickbrouwer
Thank you for running the E2E tests. For this change, I didn’t think it was necessary to check every item on the checklist. Would it be necessary for me to take actions such as checking the relevant items or removing those that do not apply?

@rickbrouwer

rickbrouwer commented Nov 30, 2025

Copy link
Copy Markdown
Member

You can remove the unnecessary items :)

@JorTurFer JorTurFer mentioned this pull request Dec 8, 2025
31 tasks
@JorTurFer
JorTurFer merged commit df677bd into kedacore:main Dec 8, 2025
17 of 19 checks passed
@keda-automation
keda-automation requested a review from a team December 8, 2025 10:29
JorTurFer added a commit to JorTurFer/keda that referenced this pull request Dec 8, 2025
…re#7273)

* fix: handle requestScaleLoop error in ScaledObject controller

Signed-off-by: u-kai <[email protected]>

* chore: update CHANGELOG for PR kedacore#7273

Signed-off-by: u-kai <[email protected]>

---------

Signed-off-by: u-kai <[email protected]>
Signed-off-by: Jorge Turrado Ferrero <[email protected]>
Co-authored-by: Jorge Turrado Ferrero <[email protected]>
JorTurFer added a commit to JorTurFer/keda that referenced this pull request Dec 8, 2025
…re#7273)

* fix: handle requestScaleLoop error in ScaledObject controller

Signed-off-by: u-kai <[email protected]>

* chore: update CHANGELOG for PR kedacore#7273

Signed-off-by: u-kai <[email protected]>

---------

Signed-off-by: u-kai <[email protected]>
Signed-off-by: Jorge Turrado Ferrero <[email protected]>
Co-authored-by: Jorge Turrado Ferrero <[email protected]>
JorTurFer added a commit to JorTurFer/keda that referenced this pull request Dec 8, 2025
…re#7273)

* fix: handle requestScaleLoop error in ScaledObject controller

Signed-off-by: u-kai <[email protected]>

* chore: update CHANGELOG for PR kedacore#7273

Signed-off-by: u-kai <[email protected]>

---------

Signed-off-by: u-kai <[email protected]>
Signed-off-by: Jorge Turrado Ferrero <[email protected]>
Co-authored-by: Jorge Turrado Ferrero <[email protected]>
Signed-off-by: Jorge Turrado <[email protected]>
JorTurFer added a commit that referenced this pull request Dec 8, 2025
* fix: Correct parse error ActiveMQ (#7245)

Signed-off-by: Rick Brouwer <[email protected]>
Signed-off-by: Jorge Turrado <[email protected]>

* fix: metricUnavailableValue parameter not working in Datadog scaler (#7241)

* fix: metricUnavailableValue parameter not working in Datadog scaler

The UseFiller flag was not being set correctly when metricUnavailableValue
was configured. This fix distinguishes between 'not configured' and
'explicitly set to 0' by checking TriggerMetadata directly.

Changes:
- Set UseFiller in validateAPIMetadata() when metricUnavailableValue exists
- Set UseFiller in validateClusterAgentMetadata() when metricUnavailableValue exists
- Remove UseFiller logic from Validate() (responsibility moved to validate functions)
- Update tests to verify UseFiller behavior with various values including 0

This allows users to explicitly set metricUnavailableValue to 0 and have
it work as a fallback value, while still erroring when not configured.

Fixes #7238

Signed-off-by: Hiroki Matsui <[email protected]>

* test: cover both API and ClusterAgent modes in UseFiller test

Updated TestDatadogMetadataValidateUseFiller to test both validateAPIMetadata()
and validateClusterAgentMetadata() code paths. This ensures that the UseFiller
flag is correctly set in both integration modes.

Test cases now cover:
- API mode: 5 test cases (not configured, 0, positive, negative, decimal)
- Cluster Agent mode: 5 test cases (same variations)

Signed-off-by: Hiroki Matsui <[email protected]>

* refactor: use pointer type for FillValue to avoid TriggerMetadata access

Changed FillValue from float64 to *float64 to distinguish between
'not configured' (nil) and 'explicitly set to any value including 0'.

This addresses reviewer feedback about avoiding direct TriggerMetadata
access and improves type safety and refactoring resistance.

Changes:
- FillValue type changed from float64 to *float64 with optional tag
- validateAPIMetadata checks nil instead of TriggerMetadata map
- validateClusterAgentMetadata checks nil instead of TriggerMetadata map
- Dereference FillValue when returning fallback value (2 locations)
- Update tests to handle pointer type with proper nil checks

Signed-off-by: Hiroki Matsui <[email protected]>

---------

Signed-off-by: Hiroki Matsui <[email protected]>
Signed-off-by: Jorge Turrado <[email protected]>

* Fix ScaledObject pause behavior when HPA doesn't exist (#7233)

When a ScaledObject has the paused annotation set before the HPA is
created, the controller would fall through and create the HPA, ignoring
the pause annotation.

The fix writes the paused status to etcd immediately before stopping
the scale loop or deleting the HPA. This prevents race conditions where
concurrent reconciles triggered by HPA deletion would not see the paused
status and perform redundant operations.

The key insight is to establish the paused state in etcd BEFORE any
operations that trigger new reconciles, ensuring subsequent reconciles
see the paused status and exit early.

This solution follows the approach suggested by @rickbrouwer.

Fixes #7231

Signed-off-by: nusmql <[email protected]>
Signed-off-by: Jorge Turrado <[email protected]>

* fix: use TriggerError when all ScaledJob triggers fail (#7205)

Signed-off-by: Rick Brouwer <[email protected]>
Signed-off-by: Jorge Turrado <[email protected]>

* Fix transfer-hpa-ownership panic when hpa name not provided (#7260)

* chore: renormalize line endings

Signed-off-by: James Williams <[email protected]>

* fix: nil pointer when transfer-hpa-ownership is true but hpa name not specified (#7254)

Signed-off-by: James Williams <[email protected]>

* update changelog

Signed-off-by: James Williams <[email protected]>

* revert vendor changes

Signed-off-by: James Williams <[email protected]>

---------

Signed-off-by: James Williams <[email protected]>
Signed-off-by: Jorge Turrado <[email protected]>

* fix: restore HPA behavior when paused-scale-in/out annotation is deleted (#7291)

When paused-scale-in or paused-scale-out annotation is deleted (not set
to "false") and the corresponding selectPolicy (scaleDown.selectPolicy
or scaleUp.selectPolicy) is not explicitly set in the ScaledObject spec,
the HPA's SelectPolicy remains stuck at "Disabled" instead of being
restored.

This occurs even if other behavior fields like policies or
stabilizationWindowSeconds are defined - only an explicit selectPolicy
value triggers the update.

Root cause: DeepDerivative treats nil as "unset" and considers it a
subset of any value, so DeepDerivative(nil, Disabled) returns true,
preventing the HPA update.

Fix: Add explicit DeepEqual check for Behavior field, following the
existing pattern used for Metrics length check.

test: add e2e test for paused-scale-in annotation removal

Signed-off-by: Dima Shevchuk <[email protected]>
Signed-off-by: Jorge Turrado <[email protected]>

* refactor: remove unused scaledObjectMetricSpecs variable (#7292)

* refactor: remove unused scaledObjectMetricSpecs variable

Signed-off-by: u-kai <[email protected]>

* update CHANGELOG.md

Signed-off-by: u-kai <[email protected]>

---------

Signed-off-by: u-kai <[email protected]>
Signed-off-by: Jorge Turrado <[email protected]>

* fix: handle requestScaleLoop error in ScaledObject controller (#7273)

* fix: handle requestScaleLoop error in ScaledObject controller

Signed-off-by: u-kai <[email protected]>

* chore: update CHANGELOG for PR #7273

Signed-off-by: u-kai <[email protected]>

---------

Signed-off-by: u-kai <[email protected]>
Signed-off-by: Jorge Turrado Ferrero <[email protected]>
Co-authored-by: Jorge Turrado Ferrero <[email protected]>
Signed-off-by: Jorge Turrado <[email protected]>

* bump actions and go version (#7295)

* bump actions and go version

Signed-off-by: Jorge Turrado <[email protected]>

* bump deps

Signed-off-by: Jorge Turrado <[email protected]>

* update pkgs

Signed-off-by: Jorge Turrado <[email protected]>

* update tools

Signed-off-by: Jorge Turrado <[email protected]>

* .

Signed-off-by: Jorge Turrado <[email protected]>

* fix test

Signed-off-by: Jorge Turrado <[email protected]>

* fix lint

Signed-off-by: Jorge Turrado <[email protected]>

* update setup-go to use go.mod version

Signed-off-by: Jorge Turrado <[email protected]>

* add nolint to exclude pulsar issues

Signed-off-by: Jorge Turrado <[email protected]>

* fix devenv

Signed-off-by: Jorge Turrado <[email protected]>

* fix codeql

Signed-off-by: Jorge Turrado <[email protected]>

* fix splunk test

Signed-off-by: Jorge Turrado <[email protected]>

* include job in links

Signed-off-by: Jorge Turrado <[email protected]>

* update to ubuntu-slim some runners

Signed-off-by: Jorge Turrado <[email protected]>

* Update apis/keda/v1alpha1/scaledobject_webhook_test.go

Co-authored-by: Copilot <[email protected]>
Signed-off-by: Jorge Turrado Ferrero <[email protected]>

* Update .github/workflows/scorecards.yml

Co-authored-by: Jan Wozniak <[email protected]>
Signed-off-by: Jorge Turrado Ferrero <[email protected]>

---------

Signed-off-by: Jorge Turrado <[email protected]>
Signed-off-by: Jorge Turrado Ferrero <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Jan Wozniak <[email protected]>
Signed-off-by: Jorge Turrado <[email protected]>

* update changelog

Signed-off-by: Jorge Turrado <[email protected]>

---------

Signed-off-by: Rick Brouwer <[email protected]>
Signed-off-by: Jorge Turrado <[email protected]>
Signed-off-by: Hiroki Matsui <[email protected]>
Signed-off-by: nusmql <[email protected]>
Signed-off-by: James Williams <[email protected]>
Signed-off-by: Dima Shevchuk <[email protected]>
Signed-off-by: u-kai <[email protected]>
Signed-off-by: Jorge Turrado Ferrero <[email protected]>
Signed-off-by: Jorge Turrado <[email protected]>
Co-authored-by: Rick Brouwer <[email protected]>
Co-authored-by: Matchan <[email protected]>
Co-authored-by: nusmql <[email protected]>
Co-authored-by: James Williams <[email protected]>
Co-authored-by: Dima Shevchuk <[email protected]>
Co-authored-by: Kai Udo <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Jan Wozniak <[email protected]>
alt-dima pushed a commit to alt-dima/keda that referenced this pull request Dec 13, 2025
…re#7273)

* fix: handle requestScaleLoop error in ScaledObject controller

Signed-off-by: u-kai <[email protected]>

* chore: update CHANGELOG for PR kedacore#7273

Signed-off-by: u-kai <[email protected]>

---------

Signed-off-by: u-kai <[email protected]>
Signed-off-by: Jorge Turrado Ferrero <[email protected]>
Co-authored-by: Jorge Turrado Ferrero <[email protected]>
Signed-off-by: Dmitriy Altuhov <[email protected]>
tangobango5 pushed a commit to tangobango5/keda that referenced this pull request Dec 22, 2025
…re#7273)

* fix: handle requestScaleLoop error in ScaledObject controller

Signed-off-by: u-kai <[email protected]>

* chore: update CHANGELOG for PR kedacore#7273

Signed-off-by: u-kai <[email protected]>

---------

Signed-off-by: u-kai <[email protected]>
Signed-off-by: Jorge Turrado Ferrero <[email protected]>
Co-authored-by: Jorge Turrado Ferrero <[email protected]>
tangobango5 pushed a commit to tangobango5/keda that referenced this pull request Feb 13, 2026
…re#7273)

* fix: handle requestScaleLoop error in ScaledObject controller

Signed-off-by: u-kai <[email protected]>

* chore: update CHANGELOG for PR kedacore#7273

Signed-off-by: u-kai <[email protected]>

---------

Signed-off-by: u-kai <[email protected]>
Signed-off-by: Jorge Turrado Ferrero <[email protected]>
Co-authored-by: Jorge Turrado Ferrero <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants