diff options
author | Dan Gudmundsson <[email protected]> | 2013-06-10 10:47:10 +0200 |
---|---|---|
committer | Dan Gudmundsson <[email protected]> | 2013-06-10 10:47:10 +0200 |
commit | a49832f74d364e01d9fb7a98caf3ca942a0a0341 (patch) | |
tree | af65b1bbdb4bd0a8656a9705c67274433680cfb6 /lib | |
parent | 9e20ac47b7107dcda818b20f6622e56f52a5ef64 (diff) | |
parent | cb5bd884c96bdb0590162638530ea52b8f549985 (diff) | |
download | otp-a49832f74d364e01d9fb7a98caf3ca942a0a0341.tar.gz otp-a49832f74d364e01d9fb7a98caf3ca942a0a0341.tar.bz2 otp-a49832f74d364e01d9fb7a98caf3ca942a0a0341.zip |
Merge branch 'dgud/mnesia-unsubscribe-fix' into maint
* dgud/mnesia-unsubscribe-fix:
mnesia: Fix (timing issue) testcase
mnesia: Fix unsubscribe error handling
Diffstat (limited to 'lib')
-rw-r--r-- | lib/mnesia/src/mnesia_subscr.erl | 10 | ||||
-rw-r--r-- | lib/mnesia/test/mnesia_evil_coverage_test.erl | 4 | ||||
-rw-r--r-- | lib/mnesia/test/mnesia_isolation_test.erl | 10 |
3 files changed, 16 insertions, 8 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)), diff --git a/lib/mnesia/test/mnesia_isolation_test.erl b/lib/mnesia/test/mnesia_isolation_test.erl index 3273bc4d40..d57f976d1f 100644 --- a/lib/mnesia/test/mnesia_isolation_test.erl +++ b/lib/mnesia/test/mnesia_isolation_test.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 @@ -613,11 +613,11 @@ unbound2(Config) when is_list(Config) -> ?match_receive({B, continuing}), %% B should now be in lock queue. - A ! continue, - ?match_receive({A, {atomic, ok}}), - ?match_receive({B, {atomic, [{ul,{key,{17,42}},val}]}}), + A ! continue, + ?match_multi_receive([{A, {atomic, ok}}, + {B, {atomic, [{ul,{key,{17,42}},val}]}}]), ok. - + receiver() -> receive {_Pid, begin_trans} -> |