summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Klishin <michael@clojurewerkz.org>2020-06-04 04:56:08 +0300
committerMichael Klishin <michael@clojurewerkz.org>2020-06-04 04:56:08 +0300
commit213c4e1ab31d3c6737795aae61f03783adf0ad34 (patch)
tree27a6f18112cf9f4f3f58d251977a28d0845f4c62 /src
parenteb41667e783596e27c3f18d0b48790a0ebde1881 (diff)
downloadrabbitmq-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.erl66
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).