Skip to content

Fix incorrect URL encoding in RabbitMQ vhosts containing %2f#6964

Merged
JorTurFer merged 1 commit intokedacore:mainfrom
Dutchy-:rabbitmq-vhost-url
Aug 17, 2025
Merged

Fix incorrect URL encoding in RabbitMQ vhosts containing %2f#6964
JorTurFer merged 1 commit intokedacore:mainfrom
Dutchy-:rabbitmq-vhost-url

Conversation

@Dutchy-
Copy link
Contributor

@Dutchy- Dutchy- commented Aug 5, 2025

This fixes the incorrect URL encoding in RabbitMQ vhosts by passing the RawPath to getVhostAndPathFromURL (which is sometimes empty, e.g. when there would be no difference with Path).

I've added testcases for vhosts containing %2F.
I've removed the check for // in getVhostAndPathFromURL because it is no longer necessary.

Checklist

Fixes #6963

@github-actions
Copy link

github-actions bot commented Aug 5, 2025

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.

@Dutchy- Dutchy- changed the title Fix incorrect URL encoding in RabbitMQ vhost when using vhosts containing %2f Fix incorrect URL encoding in RabbitMQ vhosts containing %2f Aug 5, 2025
@Dutchy- Dutchy- force-pushed the rabbitmq-vhost-url branch from cf3ba29 to ed06914 Compare August 5, 2025 16:46
@Dutchy-
Copy link
Contributor Author

Dutchy- commented Aug 5, 2025

This is a log of the new tests WITHOUT my fix:

❯ go test -run '^TestGetQueueInfo$' . -v
=== RUN   TestGetQueueInfo
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /api/queues/%2FmyVhost/evaluate_trials but it is /api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/api/queues/%2FmyVhost/evaluate_trials but it is /sub1/api/queues/myVhost/evaluate_trials
    rabbitmq_scaler_test.go:384: Expect request path to = /sub1/sub2/api/queues/%2fmyVhost/evaluate_trials but it is /sub1/sub2/api/queues/myVhost/evaluate_trials
--- FAIL: TestGetQueueInfo (0.19s)
FAIL
FAIL    github.com/kedacore/keda/v2/pkg/scalers 0.876s
FAIL

Signed-off-by: Edwin Smulders <edwin.smulders@kadaster.nl>
@Dutchy- Dutchy- force-pushed the rabbitmq-vhost-url branch from ed06914 to 0056216 Compare August 5, 2025 17:00
@rickbrouwer
Copy link
Member

rickbrouwer commented Aug 5, 2025

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

Copy link
Member

@rickbrouwer rickbrouwer left a comment

Choose a reason for hiding this comment

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

LGTM! Thank you!

@JorTurFer JorTurFer merged commit d899439 into kedacore:main Aug 17, 2025
23 checks passed
jmickey pushed a commit to jmickey/keda that referenced this pull request Aug 22, 2025
…e#6964)

Signed-off-by: Edwin Smulders <edwin.smulders@kadaster.nl>
dpochopsky pushed a commit to dpochopsky/keda that referenced this pull request Sep 12, 2025
…e#6964)

Signed-off-by: Edwin Smulders <edwin.smulders@kadaster.nl>
Signed-off-by: David Pochopsky <david.pochopsky@united.com>
alt-dima pushed a commit to alt-dima/keda that referenced this pull request Dec 13, 2025
…e#6964)

Signed-off-by: Edwin Smulders <edwin.smulders@kadaster.nl>
Signed-off-by: Dmitriy Altuhov <altuhovd@gmail.com>
tangobango5 pushed a commit to tangobango5/keda that referenced this pull request Dec 22, 2025
…e#6964)

Signed-off-by: Edwin Smulders <edwin.smulders@kadaster.nl>
tangobango5 pushed a commit to tangobango5/keda that referenced this pull request Feb 13, 2026
…e#6964)

Signed-off-by: Edwin Smulders <edwin.smulders@kadaster.nl>
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.

Incorrect URL encoding in RabbitMQ vhosts containing %2F

3 participants