summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_exchange_events.erl14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/rabbit_exchange_events.erl b/src/rabbit_exchange_events.erl
index f5372732fd..b9dfef86b7 100644
--- a/src/rabbit_exchange_events.erl
+++ b/src/rabbit_exchange_events.erl
@@ -71,8 +71,8 @@ handle_table_event({write, rabbit_route, #route{binding = B}, [], _ActivityId})
handle_table_event({delete, rabbit_route, #route{binding = B}, _OldRecs, _ActivityId}) ->
%% Deleted binding.
ok = with_exchange(B, fun (X = #exchange{type = Type}) -> Type:delete_binding(X, B) end);
-handle_table_event(Event) ->
- exit({unhandled_table_event, Event}).
+handle_table_event(_Event) ->
+ {error, unhandled_table_event}.
%%---------------------------------------------------------------------------
@@ -88,7 +88,15 @@ handle_cast(Request, State) ->
{stop, {unhandled_cast, Request}, State}.
handle_info({mnesia_table_event, Event}, State) ->
- ok = handle_table_event(Event),
+ case catch handle_table_event(Event) of
+ {'EXIT', Reason} ->
+ rabbit_log:error("Exchange event callback failed~n~p~n", [[{event, Event},
+ {reason, Reason}]]);
+ ok ->
+ ok;
+ {error, unhandled_table_event} ->
+ rabbit_log:error("Unexpected mnesia_table_event~n~p~n", [Event])
+ end,
{noreply, State};
handle_info(Info, State) ->
{stop, {unhandled_info, Info}, State}.