diff options
| author | Michael Klishin <michael@clojurewerkz.org> | 2020-06-04 04:56:08 +0300 |
|---|---|---|
| committer | Michael Klishin <michael@clojurewerkz.org> | 2020-06-04 04:56:08 +0300 |
| commit | 213c4e1ab31d3c6737795aae61f03783adf0ad34 (patch) | |
| tree | 27a6f18112cf9f4f3f58d251977a28d0845f4c62 /src | |
| parent | eb41667e783596e27c3f18d0b48790a0ebde1881 (diff) | |
| download | rabbitmq-server-git-213c4e1ab31d3c6737795aae61f03783adf0ad34.tar.gz | |
Improve reporting of 'ctl clear_topic_permissions' failures
Part of rabbitmq/rabbitmq-server#2363
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_auth_backend_internal.erl | 66 |
1 files changed, 56 insertions, 10 deletions
diff --git a/src/rabbit_auth_backend_internal.erl b/src/rabbit_auth_backend_internal.erl index 40afde7edb..3500b003b0 100644 --- a/src/rabbit_auth_backend_internal.erl +++ b/src/rabbit_auth_backend_internal.erl @@ -514,7 +514,10 @@ set_topic_permissions(Username, VirtualHost, Exchange, WritePerm, ReadPerm, Acti end . clear_topic_permissions(Username, VirtualHost, ActingUser) -> - R = rabbit_misc:execute_mnesia_transaction( + rabbit_log:debug("Asked to clear topic permissions for '~s' in virtual host '~s'", + [Username, VirtualHost]), + try + R = rabbit_misc:execute_mnesia_transaction( rabbit_vhost:with_user_and_vhost( Username, VirtualHost, fun () -> @@ -524,13 +527,36 @@ clear_topic_permissions(Username, VirtualHost, ActingUser) -> ok = mnesia:delete_object(rabbit_topic_permission, X, write) end, List) end)), - rabbit_event:notify(topic_permission_deleted, [{user, Username}, - {vhost, VirtualHost}, - {user_who_performed_action, ActingUser}]), - R. + rabbit_log:info("Successfully cleared topic permissions for '~s' in virtual host '~s'", + [Username, VirtualHost]), + rabbit_event:notify(topic_permission_deleted, [{user, Username}, + {vhost, VirtualHost}, + {user_who_performed_action, ActingUser}]), + R + catch + throw:{error, {no_such_vhost, _}} = Error -> + rabbit_log:warning("Failed to clear topic permissions for '~s': virtual host '~s' does not exist", + [Username, VirtualHost]), + throw(Error); + throw:{error, {no_such_user, _}} = Error -> + rabbit_log:warning("Failed to clear topic permissions for '~s': the user does not exist", + [Username]), + throw(Error); + throw:Error -> + rabbit_log:warning("Failed to clear topic permissions for '~s' in virtual host '~s': ~p", + [Username, VirtualHost, Error]), + throw(Error); + exit:Error -> + rabbit_log:warning("Failed to clear topic permissions for '~s' in virtual host '~s': ~p", + [Username, VirtualHost, Error]), + exit(Error) + end. clear_topic_permissions(Username, VirtualHost, Exchange, ActingUser) -> - R = rabbit_misc:execute_mnesia_transaction( + rabbit_log:debug("Asked to clear topic permissions on exchange '~s' for '~s' in virtual host '~s'", + [Exchange, Username, VirtualHost]), + try + R = rabbit_misc:execute_mnesia_transaction( rabbit_vhost:with_user_and_vhost( Username, VirtualHost, fun () -> @@ -542,10 +568,30 @@ clear_topic_permissions(Username, VirtualHost, Exchange, ActingUser) -> exchange = Exchange }, write) end)), - rabbit_event:notify(permission_deleted, [{user, Username}, - {vhost, VirtualHost}, - {user_who_performed_action, ActingUser}]), - R. + rabbit_log:info("Successfully cleared topic permissions on exchange '~s' for '~s' in virtual host '~s'", + [Exchange, Username, VirtualHost]), + rabbit_event:notify(permission_deleted, [{user, Username}, + {vhost, VirtualHost}, + {user_who_performed_action, ActingUser}]), + R + catch + throw:{error, {no_such_vhost, _}} = Error -> + rabbit_log:warning("Failed to clear topic permissions on exchange '~s' for '~s': virtual host '~s' does not exist", + [Exchange, Username, VirtualHost]), + throw(Error); + throw:{error, {no_such_user, _}} = Error -> + rabbit_log:warning("Failed to clear topic permissions on exchange '~s' for '~s': the user does not exist", + [Exchange, Username]), + throw(Error); + throw:Error -> + rabbit_log:warning("Failed to clear topic permissions on exchange '~s' for '~s' in virtual host '~s': ~p", + [Exchange, Username, VirtualHost, Error]), + throw(Error); + exit:Error -> + rabbit_log:warning("Failed to clear topic permissions on exchange '~s' for '~s' in virtual host '~s': ~p", + [Exchange, Username, VirtualHost, Error]), + exit(Error) + end. put_user(User, ActingUser) -> put_user(User, undefined, ActingUser). |
