summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2020-06-04 05:36:52 +0300
committerMichael Klishin <michael@clojurewerkz.org>2020-06-04 05:37:22 +0300
commitdb1e15071c3781b6baa2db9adce00142abffa263 (patch)
tree717002d93d0ce56e2df4978bff6ee696a4fb2df8 /src
parent213c4e1ab31d3c6737795aae61f03783adf0ad34 (diff)
downloadrabbitmq-server-git-db1e15071c3781b6baa2db9adce00142abffa263.tar.gz
Improve reporting of 'ctl add_user' and 'ctl delete_user' failures
Part of rabbitmq/rabbitmq-server#2363
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_auth_backend_internal.erl48
1 files changed, 37 insertions, 11 deletions
diff --git a/src/rabbit_auth_backend_internal.erl b/src/rabbit_auth_backend_internal.erl
index 3500b003b0..c878c0cb78 100644
--- a/src/rabbit_auth_backend_internal.erl
+++ b/src/rabbit_auth_backend_internal.erl
@@ -211,7 +211,7 @@ add_user(Username, Password, ActingUser) ->
fun add_user_sans_validation/3).
add_user_sans_validation(Username, Password, ActingUser) ->
- rabbit_log:info("Creating user '~s'~n", [Username]),
+ rabbit_log:debug("Asked to create a new user '~s', password length in bytes: ~p", [Username, bit_size(Password)]),
%% hash_password will pick the hashing function configured for us
%% but we also need to store a hint as part of the record, so we
%% retrieve it here one more time
@@ -220,7 +220,8 @@ add_user_sans_validation(Username, Password, ActingUser) ->
password_hash = hash_password(HashingMod, Password),
tags = [],
hashing_algorithm = HashingMod},
- R = rabbit_misc:execute_mnesia_transaction(
+ try
+ R = rabbit_misc:execute_mnesia_transaction(
fun () ->
case mnesia:wread({rabbit_user, Username}) of
[] ->
@@ -229,15 +230,28 @@ add_user_sans_validation(Username, Password, ActingUser) ->
mnesia:abort({user_already_exists, Username})
end
end),
- rabbit_event:notify(user_created, [{name, Username},
- {user_who_performed_action, ActingUser}]),
- R.
+ rabbit_log:info("Created user '~s'", [Username]),
+ rabbit_event:notify(user_created, [{name, Username},
+ {user_who_performed_action, ActingUser}]),
+ R
+ catch
+ throw:{error, {user_already_exists, _}} = Error ->
+ rabbit_log:warning("Failed to add user '~s': the user already exists", [Username]),
+ throw(Error);
+ throw:Error ->
+ rabbit_log:warning("Failed to add user '~s': ~p", [Username, Error]),
+ throw(Error);
+ exit:Error ->
+ rabbit_log:warning("Failed to add user '~s': ~p", [Username, Error]),
+ exit(Error)
+ end .
-spec delete_user(rabbit_types:username(), rabbit_types:username()) -> 'ok'.
delete_user(Username, ActingUser) ->
- rabbit_log:info("Deleting user '~s'~n", [Username]),
- R = rabbit_misc:execute_mnesia_transaction(
+ rabbit_log:debug("Asked to delete user '~s'", [Username]),
+ try
+ R = rabbit_misc:execute_mnesia_transaction(
rabbit_misc:with_user(
Username,
fun () ->
@@ -256,10 +270,22 @@ delete_user(Username, ActingUser) ->
[ok = mnesia:delete_object(rabbit_topic_permission, R, write) || R <- UserTopicPermissions],
ok
end)),
- rabbit_event:notify(user_deleted,
- [{name, Username},
- {user_who_performed_action, ActingUser}]),
- R.
+ rabbit_log:info("Deleted user '~s'", [Username]),
+ rabbit_event:notify(user_deleted,
+ [{name, Username},
+ {user_who_performed_action, ActingUser}]),
+ R
+ catch
+ throw:{error, {no_such_user, _}} = Error ->
+ rabbit_log:warning("Failed to delete user '~s': the user does not exist", [Username]),
+ throw(Error);
+ throw:Error ->
+ rabbit_log:warning("Failed to delete user '~s': ~p", [Username, Error]),
+ throw(Error);
+ exit:Error ->
+ rabbit_log:warning("Failed to delete user '~s': ~p", [Username, Error]),
+ exit(Error)
+ end .
-spec lookup_user
(rabbit_types:username()) ->