From 18128ff4e9ff7bd1fcb960edf084f8db839bdd8d Mon Sep 17 00:00:00 2001 From: Dan Gudmundsson Date: Thu, 17 Mar 2016 10:23:41 +0100 Subject: mnesia: Send mnesia_down messages to waiting transactions Mnesia didn't forward mnesia_down to transactions which where already decided to be aborted, but that could lead to hanging transactions still waiting for messages from the node which had stopped. --- lib/mnesia/src/mnesia_tm.erl | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) (limited to 'lib/mnesia') 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) -- cgit v1.2.3 From 7765727317721d5de5949a5f39e0211f3b920da7 Mon Sep 17 00:00:00 2001 From: Erlang/OTP Date: Fri, 1 Apr 2016 20:19:12 +0200 Subject: Prepare release --- lib/mnesia/doc/src/notes.xml | 18 +++++++++++++++++- lib/mnesia/vsn.mk | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) (limited to 'lib/mnesia') diff --git a/lib/mnesia/doc/src/notes.xml b/lib/mnesia/doc/src/notes.xml index 149cd69559..18bb110104 100644 --- a/lib/mnesia/doc/src/notes.xml +++ b/lib/mnesia/doc/src/notes.xml @@ -39,7 +39,23 @@ thus constitutes one section in this document. The title of each section is the version number of Mnesia.

-
Mnesia 4.13.3 +
Mnesia 4.13.4 + +
Fixed Bugs and Malfunctions + + +

+ Mnesia transactions could hang while waiting on a + response from a node who had stopped.

+

+ Own Id: OTP-13423

+
+
+
+ +
+ +
Mnesia 4.13.3
Fixed Bugs and Malfunctions diff --git a/lib/mnesia/vsn.mk b/lib/mnesia/vsn.mk index 843d9d18d4..194bc439a0 100644 --- a/lib/mnesia/vsn.mk +++ b/lib/mnesia/vsn.mk @@ -1 +1 @@ -MNESIA_VSN = 4.13.3 +MNESIA_VSN = 4.13.4 -- cgit v1.2.3