diff options
| author | Anupama Singh <anupamasingh31@gmail.com> | 2020-07-09 15:14:06 +0200 |
|---|---|---|
| committer | Michael Klishin <michael@clojurewerkz.org> | 2020-08-24 20:14:30 +0300 |
| commit | 8c28058a9e929d687e81a0013c14b1d82353978b (patch) | |
| tree | 06c643c9cf6d92c427cf52a7b73387a6ac1f11bf | |
| parent | 4a68d598bb8a7e41b9339f2a754cd3431eb2edc2 (diff) | |
| download | rabbitmq-server-git-8c28058a9e929d687e81a0013c14b1d82353978b.tar.gz | |
Added new user_limits feature flag
| -rw-r--r-- | src/rabbit_core_ff.erl | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/rabbit_core_ff.erl b/src/rabbit_core_ff.erl index 63aa9b30f1..a251def11c 100644 --- a/src/rabbit_core_ff.erl +++ b/src/rabbit_core_ff.erl @@ -10,7 +10,8 @@ -export([quorum_queue_migration/3, implicit_default_bindings_migration/3, virtual_host_metadata_migration/3, - maintenance_mode_status_migration/3]). + maintenance_mode_status_migration/3, + user_limits_migration/3]). -rabbit_feature_flag( {quorum_queue, @@ -42,6 +43,13 @@ migration_fun => {?MODULE, maintenance_mode_status_migration} }}). +-rabbit_feature_flag( + {user_limits, + #{desc => "Configure connection and channel limits for a user", + stability => stable, + migration_fun => {?MODULE, user_limits_migration} + }}). + %% ------------------------------------------------------------------- %% Quorum queues. %% ------------------------------------------------------------------- @@ -141,3 +149,18 @@ maintenance_mode_status_migration(FeatureName, _FeatureProps, enable) -> end; maintenance_mode_status_migration(_FeatureName, _FeatureProps, is_enabled) -> rabbit_table:exists(rabbit_maintenance:status_table_name()). + +%% ------------------------------------------------------------------- +%% User limits. +%% ------------------------------------------------------------------- + +user_limits_migration(_FeatureName, _FeatureProps, enable) -> + Tab = rabbit_user, + rabbit_table:wait([Tab], _Retry = true), + Fun = fun(Row) -> internal_user:upgrade_to(internal_user_v2, Row) end, + case mnesia:transform_table(Tab, Fun, internal_user:fields(internal_user_v2)) of + {atomic, ok} -> ok; + {aborted, Reason} -> {error, Reason} + end; +user_limits_migration(_FeatureName, _FeatureProps, is_enabled) -> + mnesia:table_info(rabbit_user, attributes) =:= internal_user:fields(internal_user_v2). |
