diff options
| author | Michael Klishin <michael@clojurewerkz.org> | 2020-06-04 05:36:52 +0300 |
|---|---|---|
| committer | Michael Klishin <michael@clojurewerkz.org> | 2020-06-04 05:37:22 +0300 |
| commit | db1e15071c3781b6baa2db9adce00142abffa263 (patch) | |
| tree | 717002d93d0ce56e2df4978bff6ee696a4fb2df8 /src | |
| parent | 213c4e1ab31d3c6737795aae61f03783adf0ad34 (diff) | |
| download | rabbitmq-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.erl | 48 |
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()) -> |
