diff options
author | Dan Gudmundsson <[email protected]> | 2013-06-04 15:46:20 +0200 |
---|---|---|
committer | Dan Gudmundsson <[email protected]> | 2013-06-04 15:46:20 +0200 |
commit | 927982b8754ceada8b6d76225475f54b410de9e9 (patch) | |
tree | ba9e393c664da3b836ef8b12018b2da77cafaf15 | |
parent | ed22252022f5627bee92c0c2e45450c875ad5868 (diff) | |
download | otp-927982b8754ceada8b6d76225475f54b410de9e9.tar.gz otp-927982b8754ceada8b6d76225475f54b410de9e9.tar.bz2 otp-927982b8754ceada8b6d76225475f54b410de9e9.zip |
mnesia: Fix unsubscribe error handling
-rw-r--r-- | lib/mnesia/src/mnesia_subscr.erl | 10 | ||||
-rw-r--r-- | lib/mnesia/test/mnesia_evil_coverage_test.erl | 4 |
2 files changed, 11 insertions, 3 deletions
diff --git a/lib/mnesia/src/mnesia_subscr.erl b/lib/mnesia/src/mnesia_subscr.erl index 415c69d508..8f78dc55e8 100644 --- a/lib/mnesia/src/mnesia_subscr.erl +++ b/lib/mnesia/src/mnesia_subscr.erl @@ -1,7 +1,7 @@ %% %% %CopyrightBegin% %% -%% Copyright Ericsson AB 1997-2010. All Rights Reserved. +%% Copyright Ericsson AB 1997-2013. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in @@ -447,8 +447,12 @@ deactivate(ClientPid, What, Var, SubscrTab) -> {'EXIT', _} -> unlink(ClientPid) end, - del_subscr(Var, What, ClientPid), - {ok, node()}. + try + del_subscr(Var, What, ClientPid), + {ok, node()} + catch _:_ -> + {error, badarg} + end. del_subscr(subscribers, _What, Pid) -> mnesia_lib:del(subscribers, Pid); diff --git a/lib/mnesia/test/mnesia_evil_coverage_test.erl b/lib/mnesia/test/mnesia_evil_coverage_test.erl index 0df245b75d..db23a39943 100644 --- a/lib/mnesia/test/mnesia_evil_coverage_test.erl +++ b/lib/mnesia/test/mnesia_evil_coverage_test.erl @@ -1985,6 +1985,10 @@ subscribe_standard(Config) when is_list(Config)-> ?match({atomic, ok}, mnesia:create_table(Tab, Def)), %% Check system events + ?match({error, {badarg, foo}}, mnesia:unsubscribe(foo)), + ?match({error, badarg}, mnesia:unsubscribe({table, foo})), + ?match(_, mnesia:unsubscribe(activity)), + ?match({ok, N1}, mnesia:subscribe(system)), ?match({ok, N1}, mnesia:subscribe(activity)), |