-
Notifications
You must be signed in to change notification settings - Fork 3.9k
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
Methods to determine deprecated features in use report incomplete/inaccurate information #12619
Comments
It's the CLI command that specifically only checks for CMQs. |
Strange, I can reproduce the issue using the HTTP API as well 😕 |
Maybe the HTTP API endpoints do the same thing, the CLI command was the first thing I've taken a look at. |
In the specific case of This is the first thing to add if we want something accurate. I will prepare a patch. |
Adding a [
{
"name": "transient_nonexcl_queues",
"desc": "",
"deprecation_phase": "permitted_by_default",
"doc_url": "https://blog.rabbitmq.com/posts/2021/08/4.0-deprecation-announcements/#removal-of-transient-non-exclusive-queues",
"provided_by": "rabbit"
}
] It is not enough for the CLI command though, so it must not call the deprecated feature subsystem correctly. Edit: Indeed, as Michael, the CLI is not calling the subsystem at all. It does its own thing specifically for classic mirrored queues. |
…_queues` depr. feature [Why] Without this callback, the deprecated features subsystem can't report if the feature is used or not. This reduces the usefulness of the HTTP API endpoint or the CLI command that help verify if a cluster is using deprecated features. [How] The callback counts transient non-exclusive queues and return `true` if there are one or more of them. References #12619.
[Why] The previous implementation bypassed the deprecated features subsystem. It only cared about classic mirrored queues and called some queue-related code directly to determine if this specific feature was used. [How] The command code is simplified by calling the deprecated subsystem to list used deprecated features instead. References #12619.
[Why] The previous implementation bypassed the deprecated features subsystem. It only cared about classic mirrored queues and called some queue-related code directly to determine if this specific feature was used. [How] The command code is simplified by calling the deprecated subsystem to list used deprecated features instead. References #12619.
…_queues` depr. feature [Why] Without this callback, the deprecated features subsystem can't report if the feature is used or not. This reduces the usefulness of the HTTP API endpoint or the CLI command that help verify if a cluster is using deprecated features. [How] The callback counts transient non-exclusive queues and return `true` if there are one or more of them. References #12619.
…_queues` depr. feature [Why] Without this callback, the deprecated features subsystem can't report if the feature is used or not. This reduces the usefulness of the HTTP API endpoint or the CLI command that help verify if a cluster is using deprecated features. [How] The callback counts transient non-exclusive queues and return `true` if there are one or more of them. References #12619.
Both pull requests are ready for review! @Zerpet: could you please give them a try? You will need both to fix the problem entirely. |
@dumbbell I built the broker after merging both PRs locally, run the same commands as in the OP, and I got the expected result 👍 I'll defer the approval of the PRs to other folks more experienced with Erlang code. |
…_queues` depr. feature [Why] Without this callback, the deprecated features subsystem can't report if the feature is used or not. This reduces the usefulness of the HTTP API endpoint or the CLI command that help verify if a cluster is using deprecated features. [How] The callback counts transient non-exclusive queues and return `true` if there are one or more of them. References #12619.
[Why] The previous implementation bypassed the deprecated features subsystem. It only cared about classic mirrored queues and called some queue-related code directly to determine if this specific feature was used. [How] The command code is simplified by calling the deprecated subsystem to list used deprecated features instead. References #12619.
Thank you for reviewing and merging! |
[Why] The previous implementation bypassed the deprecated features subsystem. It only cared about classic mirrored queues and called some queue-related code directly to determine if this specific feature was used. [How] The command code is simplified by calling the deprecated subsystem to list used deprecated features instead. References #12619. (cherry picked from commit ddaea6f)
…_queues` depr. feature [Why] Without this callback, the deprecated features subsystem can't report if the feature is used or not. This reduces the usefulness of the HTTP API endpoint or the CLI command that help verify if a cluster is using deprecated features. [How] The callback counts transient non-exclusive queues and return `true` if there are one or more of them. References #12619. (cherry picked from commit 638e3a4)
Describe the bug
The command
rabbitmq-diagnostics check_if_any_deprecated_features_are_used
and the API endpoint/api/deprecated-features/used
do not report accurate information on actual state of the system. The command/endpoint only seem to check for classic queue mirroring, and it doesn't report the state of other deprecated features in use.Reproduction steps
docker run --name bunny -p 15672:15672 --rm rabbitmq:4.0-management
docker exec bunny rabbitmq-diagnostics --formatter=pretty_table list_deprecated_features
Observe
transient_nonexcl_queues
as deprecated feature, permitted by defaultcurl -v -u guest:guest http://localhost:15672/api/deprecated-features/used
[]
are reportedtransient_nonexcl_queues
: Featuretransient_nonexcl_queues
is deprecated.docker exec bunny rabbitmq-diagnostics --formatter=pretty_table check_if_any_deprecated_features_are_used
Cluster reported no deprecated features in use
Expected behavior
The command
rabbitmq-diagnostics --formatter=pretty_table check_if_any_deprecated_features_are_used
reports thattransient_nonexcl_queues
deprecated feature is used.The API endpoint
/api/deprecated-features/used
reports thattransient_nonexcl_queues
deprecated feature is used.Additional context
Setting
deprecated_features.permit.transient_nonexcl_queues = false
causes the queue declare operation to fail right away.The text was updated successfully, but these errors were encountered: