Skip to content

/api/aliveness-test/vhost uses deprecated feature transient_nonexcl_queues with RabbitMQ 4.0.x #13047

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
jgkirschbaum opened this issue Jan 10, 2025 · 3 comments · Fixed by #13052
Milestone

Comments

@jgkirschbaum
Copy link

jgkirschbaum commented Jan 10, 2025

Describe the bug

In a fresh RabbitMQ 4.0.5 installation, when using the /api/aliveness-test/%2F API call a queue named aliveness-test is created in the corresponding vhost /. The queue is created as a classic, transient, non-exclusive queue. This leads to the "transient_nonexcl_queues" message with rabbitmqctl check_if_any_deprecated_features_are_used and also in the management plugin to the message "Deprecated features are being used".

Reproduction steps

  1. Fresh install of RabbitMQ 4.0.5
  2. rabbitmqctl check_if_any_deprecated_features_are_used
Checking if any deprecated features are used ...
Cluster reported no deprecated features in use
  1. curl -su user:password https://localhost:15671/api/aliveness-test/%2F
{"status":"ok"}
  1. rabbitmqctl check_if_any_deprecated_features_are_used
Checking if any deprecated features are used ...
transient_nonexcl_queues

Expected behavior

The API call /api/aliveness-test/vhost must not lead to the use of deprecated features.

@mkuratczyk
Copy link
Contributor

Yes, we should change this. I guess a durable auto-delete queue should be the right choice for this purpose

@michaelklishin
Copy link
Collaborator

michaelklishin commented Jan 10, 2025

That health check arguably should be made a no-op because it is largely useless. There is no such thing as One True Health Check, we have made the CLI equivalent a no-op in 4.0.0 and the docs have been updated to recommend N individual focussed checks several years ago.

@michaelklishin
Copy link
Collaborator

michaelklishin commented Jan 10, 2025

I will make the check a no-op instead, it is already gone from the HTTP API reference in main and v4.0.x IIRC, and its ≈ CLI equivalent (in the sense that it promises One True Health Check™ instead of a collection of fine-grained checks) has been deprecated for years and a no-op since 4.0.0.

@michaelklishin michaelklishin added this to the 4.0.6 milestone Jan 11, 2025
mergify bot pushed a commit that referenced this issue Jan 11, 2025
This follows the decision that was made for
'rabbitm-diagnostics node_health_check' which
is a no-op as of 4.0.0 following a few years of
deprecation.

The justification is very similar:

1. There is no such thing as "One True Health Check".
   A single health check is too coarse-grained to
   explain what specifically is not right about
   cluster state
2. Indivual fine-grained health checks have been
   available for a few years now, see
   https://www.rabbitmq.com/docs/monitoring#health-checks
3. This particular check tests something that
   effectively never fails, based on my 14+
   years of RabbitMQ contributions and user support
   of all shapes and forms
4. This check uses a deprecated feature: non-exclusive
   non-durable/transient classic queues

If something about this health check is worth
preserving, we can always add a new one
under GET /api/health/checks/*

Closes #13047.

(cherry picked from commit ad906c9)
michaelklishin added a commit that referenced this issue Jan 12, 2025
This follows the decision that was made for
'rabbitm-diagnostics node_health_check' which
is a no-op as of 4.0.0 following a few years of
deprecation.

The justification is very similar:

1. There is no such thing as "One True Health Check".
   A single health check is too coarse-grained to
   explain what specifically is not right about
   cluster state
2. Indivual fine-grained health checks have been
   available for a few years now, see
   https://www.rabbitmq.com/docs/monitoring#health-checks
3. This particular check tests something that
   effectively never fails, based on my 14+
   years of RabbitMQ contributions and user support
   of all shapes and forms
4. This check uses a deprecated feature: non-exclusive
   non-durable/transient classic queues

If something about this health check is worth
preserving, we can always add a new one
under GET /api/health/checks/*

Closes #13047.
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 a pull request may close this issue.

3 participants