summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <michael@rabbitmq.com>2013-06-19 15:57:00 +0400
committerMichael Klishin <michael@rabbitmq.com>2013-06-19 15:57:00 +0400
commit6ae3c5917807effb509ddaf72abf201a16f27b67 (patch)
treec516c62a59c05b4f8a174a1336dcb61d5cdfb190
parentf7212e3565da49efd4855ab59690d25b92abbf86 (diff)
downloadrabbitmq-server-6ae3c5917807effb509ddaf72abf201a16f27b67.tar.gz
Don't crash when an alarm is cleared when there's nothing to clear
-rw-r--r--src/rabbit_alarm.erl7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/rabbit_alarm.erl b/src/rabbit_alarm.erl
index 17f1edcf..07247573 100644
--- a/src/rabbit_alarm.erl
+++ b/src/rabbit_alarm.erl
@@ -145,7 +145,12 @@ dict_unappend_all(Key, _Val, Dict) ->
dict:erase(Key, Dict).
dict_unappend(Key, Val, Dict) ->
- case lists:delete(Val, dict:fetch(Key, Dict)) of
+ L = case dict:find(Key, Dict) of
+ {ok, V} -> V;
+ error -> []
+ end,
+
+ case lists:delete(Val, L) of
[] -> dict:erase(Key, Dict);
X -> dict:store(Key, X, Dict)
end.