aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorErlang/OTP <[email protected]>2016-04-01 20:18:51 +0200
committerErlang/OTP <[email protected]>2016-04-01 20:18:51 +0200
commit0634218b601614802563927c8f9b6f51a463b746 (patch)
tree909262f0cc777f36a7dc2d48df1b1436501f9cd4 /lib
parentc81d11d2affc2675d37ff0f64bbdc866453a71df (diff)
parent18128ff4e9ff7bd1fcb960edf084f8db839bdd8d (diff)
downloadotp-0634218b601614802563927c8f9b6f51a463b746.tar.gz
otp-0634218b601614802563927c8f9b6f51a463b746.tar.bz2
otp-0634218b601614802563927c8f9b6f51a463b746.zip
Merge branch 'dgud/mnesia/hang-sym-trans/OTP-13423' into maint-18
* dgud/mnesia/hang-sym-trans/OTP-13423: mnesia: Send mnesia_down messages to waiting transactions
Diffstat (limited to 'lib')
-rw-r--r--lib/mnesia/src/mnesia_tm.erl11
1 files changed, 3 insertions, 8 deletions
diff --git a/lib/mnesia/src/mnesia_tm.erl b/lib/mnesia/src/mnesia_tm.erl
index e7ee938312..1d3eb87036 100644
--- a/lib/mnesia/src/mnesia_tm.erl
+++ b/lib/mnesia/src/mnesia_tm.erl
@@ -1692,13 +1692,10 @@ commit_participant(Coord, Tid, Bin, C0, DiscNs, _RamNs) ->
?eval_debug_fun({?MODULE, commit_participant, undo_prepare},
[{tid, Tid}]);
- {'EXIT', _, _} ->
+ {'EXIT', _MnesiaTM, Reason} ->
+ reply(Coord, {do_abort, Tid, self(), {bad_commit,Reason}}),
mnesia_recover:log_decision(D#decision{outcome = aborted}),
- ?eval_debug_fun({?MODULE, commit_participant, exit_log_abort},
- [{tid, Tid}]),
- mnesia_schema:undo_prepare_commit(Tid, C0),
- ?eval_debug_fun({?MODULE, commit_participant, exit_undo_prepare},
- [{tid, Tid}]);
+ mnesia_schema:undo_prepare_commit(Tid, C0);
Msg ->
verbose("** ERROR ** commit_participant ~p, got unexpected msg: ~p~n",
@@ -2210,8 +2207,6 @@ reconfigure_coordinators(N, [{Tid, [Store | _]} | Coordinators]) ->
true ->
send_mnesia_down(Tid, Store, N)
end;
- aborted ->
- ignore; % avoid spurious mnesia_down messages
_ ->
%% Tell the coordinator about the mnesia_down
send_mnesia_down(Tid, Store, N)