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
CLI commands do not scan [for commands] plugins that are transient dependencies #6020
Comments
how to reproduce$ bazel run broker RABBITMQ_ENABLED_PLUGINS=rabbitmq_stream_management then $ ./bazel-bin/broker-home/sbin/rabbitmq-streams add_super_stream test --partitions 3
Command 'add_super_stream' not found. ProblemThe Cli uses the rabbitmq-server/deps/rabbitmq_cli/lib/rabbitmq/cli/core/command_modules.ex Lines 103 to 115 in 97a756e
When the stream is enabled using That's why the This error also happens with |
One of the possible solutions could be:
It could be a change without too much impact per conversation with @dumbbell |
Started looking into this issue, with a solution that does not require communication with a running node (via RPC), but instead include a plugins dependencies in the verification. |
In many tests, we do not care what is the complete set of plugins running on a node (or present, or in a specific state). We only care that a few select ones are running, are of the expected version, in a certain state, and so on. So list comparison assertions are counterproductive and lead to test interference that is difficult to track down. In many cases we can do more fine grained assertions and ignore the rest of the plugins present on the node. References #6289, #6020.
As of #6316/#6020 all plugin directories are scanned earlier and unconditionally. In some environments, the path won't be set or will be set incorrectly. Make sure that 'rabbitmqctl help' and friends work in such environments, even if no commands from plugins would be available. Per discussion with @pjk25.
In many tests, we do not care what is the complete set of plugins running on a node (or present, or in a specific state). We only care that a few select ones are running, are of the expected version, in a certain state, and so on. So list comparison assertions are counterproductive and lead to test interference that is difficult to track down. In many cases we can do more fine grained assertions and ignore the rest of the plugins present on the node. References #6289, #6020. (cherry picked from commit 6ebbfaa)
As of #6316/#6020 all plugin directories are scanned earlier and unconditionally. In some environments, the path won't be set or will be set incorrectly. Make sure that 'rabbitmqctl help' and friends work in such environments, even if no commands from plugins would be available. Per discussion with @pjk25. (cherry picked from commit 0c821de)
In many tests, we do not care what is the complete set of plugins running on a node (or present, or in a specific state). We only care that a few select ones are running, are of the expected version, in a certain state, and so on. So list comparison assertions are counterproductive and lead to test interference that is difficult to track down. In many cases we can do more fine grained assertions and ignore the rest of the plugins present on the node. References #6289, #6020. (cherry picked from commit 6ebbfaa) (cherry picked from commit 65d1c45)
As of #6316/#6020 all plugin directories are scanned earlier and unconditionally. In some environments, the path won't be set or will be set incorrectly. Make sure that 'rabbitmqctl help' and friends work in such environments, even if no commands from plugins would be available. Per discussion with @pjk25. (cherry picked from commit 0c821de) (cherry picked from commit 9c80895)
In many tests, we do not care what is the complete set of plugins running on a node (or present, or in a specific state). We only care that a few select ones are running, are of the expected version, in a certain state, and so on. So list comparison assertions are counterproductive and lead to test interference that is difficult to track down. In many cases we can do more fine grained assertions and ignore the rest of the plugins present on the node. References #6289, #6020. (cherry picked from commit 6ebbfaa) (cherry picked from commit 65d1c45) (cherry picked from commit cd23499)
As of #6316/#6020 all plugin directories are scanned earlier and unconditionally. In some environments, the path won't be set or will be set incorrectly. Make sure that 'rabbitmqctl help' and friends work in such environments, even if no commands from plugins would be available. Per discussion with @pjk25. (cherry picked from commit 0c821de) (cherry picked from commit 9c80895) (cherry picked from commit a796343)
The command fails in two different contexts.
New installation
docker exec -it rmq311 /bin/bash
rabbitmq-plugins enable rabbitmq_stream_management
It works only if the
rabbitmq_stream
plugin is enabled first and then it is possible to enablerabbitmq_stream_management
Update cluster
I had a similar problem during a cluster update from
3.10.7
to3.11
I tried to execute:
I had to remove and enable the plugin to make it working:
The text was updated successfully, but these errors were encountered: