rabbitmq-server/deps
Jean-Sébastien Pédron a4e8cdda58
rabbit_feature_flags: Support required feature flags in plugins
[Why]
If a plugin was already enabled when RabbitMQ starts, its required
feature flags were correctly handled and thus enabled. However, this was
not the case for a plugin enabled at runtime.

Here is an example with the `drop_unroutable_metric` from the
rabbitmq_management_agent plugin:

    Feature flags: `drop_unroutable_metric`: required feature flag not
    enabled! It must be enabled before upgrading RabbitMQ.

Supporting required feature flags in plugin is trickier than in the
core broker. Indeed, with the broker, we know when this is the first
time the broker is started. Therefore we are sure that a required
feature flag can be enabled directly, there is no existing data/context
that could conflict with the code behind the required feature flag.

For plugins, this is different: a plugin can be enabled/disabled at
runtime and between broker restarts (and thus upgrades). So, when a
plugin is enabled and it has a required feature flag, we have no way to
make sure that there is no existing and conflicting data/context.

[How]
In this patch, if the required feature flag is provided by a plugin
(i.e. not `rabbit`), we always mark it as enabled.

The plugin is responsible for handling any existing data/context and
perform any cleanup/conversion.

Reported by: @ansd
2023-02-20 10:56:36 +01:00
..
amqp10_client Cleanup dialyzer calls 2023-02-06 17:05:30 +01:00
amqp10_common Cleanup dialyzer calls 2023-02-06 17:05:30 +01:00
amqp_client Avoid the need to pass package name to rabbitmq_integration_suite 2023-01-18 15:25:27 +01:00
rabbit rabbit_feature_flags: Support required feature flags in plugins 2023-02-20 10:56:36 +01:00
rabbit_common Fix all dependencies for the dialyzer 2023-02-13 17:37:44 +01:00
rabbitmq_amqp1_0 Merge pull request #7196 from rabbitmq/dialyzer-enable-Wunkown 2023-02-14 13:41:22 -03:00
rabbitmq_auth_backend_cache Cleanup dialyzer calls 2023-02-06 17:05:30 +01:00
rabbitmq_auth_backend_http Fix all dialyzer warnings in auth backends 2023-01-19 16:01:30 +01:00
rabbitmq_auth_backend_ldap Add test for #7161 2023-02-02 14:16:37 -08:00
rabbitmq_auth_backend_oauth2 Merge pull request #7177 from rabbitmq/oauth-mqtt-test 2023-02-06 23:18:17 -05:00
rabbitmq_auth_mechanism_ssl Fix all dependencies for the dialyzer 2023-02-13 17:37:44 +01:00
rabbitmq_aws Add missing dep to //deps/rabbitmq_aws:eunit test 2023-02-16 12:31:40 +01:00
rabbitmq_cli Rename the tanzu cli scope to vmware 2023-02-16 13:49:54 +01:00
rabbitmq_codegen Replace files with symlinks 2022-04-15 06:04:29 -07:00
rabbitmq_consistent_hash_exchange Fix all dependencies for the dialyzer 2023-02-13 17:37:44 +01:00
rabbitmq_ct_client_helpers Add timeout for test AMQP 0.9.1 connection to open 2023-02-16 19:25:06 +01:00
rabbitmq_ct_helpers rabbit_nodes: Add list functions to clarify which nodes we are interested in 2023-02-13 12:58:40 +01:00
rabbitmq_event_exchange Cleanup dialyzer calls 2023-02-06 17:05:30 +01:00
rabbitmq_federation Cleanup dialyzer calls 2023-02-06 17:05:30 +01:00
rabbitmq_federation_management Cleanup dialyzer calls 2023-02-06 17:05:30 +01:00
rabbitmq_jms_topic_exchange Unit test rabbit_db_* modules, spec and API updates 2023-02-02 15:01:42 +01:00
rabbitmq_management Fix issue 7301 2023-02-15 14:29:55 +01:00
rabbitmq_management_agent rabbit_nodes: Add list functions to clarify which nodes we are interested in 2023-02-13 12:58:40 +01:00
rabbitmq_mqtt Fix flaky MQTT Java test 2023-02-20 10:42:18 +01:00
rabbitmq_peer_discovery_aws Fix all dialyzer warnings in AWS-related plugins 2023-01-20 15:20:26 +01:00
rabbitmq_peer_discovery_common Fix all dialyzer warnings in peer discovery plugins 2023-01-23 22:32:06 +00:00
rabbitmq_peer_discovery_consul Cleanup dialyzer calls 2023-02-06 17:05:30 +01:00
rabbitmq_peer_discovery_etcd Update the note about eetcd and dialyzer 2023-02-15 16:39:27 +01:00
rabbitmq_peer_discovery_k8s Cleanup dialyzer calls 2023-02-06 17:05:30 +01:00
rabbitmq_prometheus Rename the tanzu cli scope to vmware 2023-02-16 13:49:54 +01:00
rabbitmq_random_exchange Cleanup dialyzer calls 2023-02-06 17:05:30 +01:00
rabbitmq_recent_history_exchange Unit test rabbit_db_* modules, spec and API updates 2023-02-02 15:01:42 +01:00
rabbitmq_sharding Cleanup dialyzer calls 2023-02-06 17:05:30 +01:00
rabbitmq_shovel rabbit_nodes: Add list functions to clarify which nodes we are interested in 2023-02-13 12:58:40 +01:00
rabbitmq_shovel_management Cleanup dialyzer calls 2023-02-06 17:05:30 +01:00
rabbitmq_stomp Remove compatibility for feature flag stream_queue 2023-02-13 15:31:40 +00:00
rabbitmq_stream Delete rabbit_stream_SUITE setup steps 2023-02-15 17:01:59 +00:00
rabbitmq_stream_common Fix all dependencies for the dialyzer 2023-02-13 17:37:44 +01:00
rabbitmq_stream_management Remove compatibility for feature flag stream_queue 2023-02-13 15:31:40 +00:00
rabbitmq_top Cleanup dialyzer calls 2023-02-06 17:05:30 +01:00
rabbitmq_tracing Cleanup dialyzer calls 2023-02-06 17:05:30 +01:00
rabbitmq_trust_store Cleanup dialyzer calls 2023-02-06 17:05:30 +01:00
rabbitmq_web_dispatch Fix all dialyzer warnings in rabbitmq_web_dispatch 2023-01-19 14:35:22 +01:00
rabbitmq_web_mqtt Fix all dependencies for the dialyzer 2023-02-13 17:37:44 +01:00
rabbitmq_web_mqtt_examples Cleanup dialyzer calls 2023-02-06 17:05:30 +01:00
rabbitmq_web_stomp Cleanup dialyzer calls 2023-02-06 17:05:30 +01:00
rabbitmq_web_stomp_examples Cleanup dialyzer calls 2023-02-06 17:05:30 +01:00
trust_store_http Invoke assert_suites macro in all deps/* 2023-01-18 15:09:51 +01:00