aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Gudmundsson <[email protected]>2014-05-26 12:19:08 +0200
committerDan Gudmundsson <[email protected]>2014-05-26 12:19:08 +0200
commita83b75d99ae51963b054d74c9203966c8e6878fb (patch)
tree4be91ceda9980815a24fa9a5f32d628ed81991f7
parent3c95f2613cc7030576f28dae73129dffc1962b96 (diff)
parent720f33780dfac4f5ec0889d5fcfb1428ec157482 (diff)
downloadotp-a83b75d99ae51963b054d74c9203966c8e6878fb.tar.gz
otp-a83b75d99ae51963b054d74c9203966c8e6878fb.tar.bz2
otp-a83b75d99ae51963b054d74c9203966c8e6878fb.zip
Merge branch 'dgud/mnesia/force-load-hangs/OTP-11948' into maint
* dgud/mnesia/force-load-hangs/OTP-11948: mnesia: Handle failed net_loads better
-rw-r--r--lib/mnesia/src/mnesia_controller.erl9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/mnesia/src/mnesia_controller.erl b/lib/mnesia/src/mnesia_controller.erl
index a83e55ac62..fe2fd67d71 100644
--- a/lib/mnesia/src/mnesia_controller.erl
+++ b/lib/mnesia/src/mnesia_controller.erl
@@ -1208,7 +1208,14 @@ handle_info(Done = #loader_done{worker_pid=WPid, table_name=Tab}, State0) ->
{value,{_,Worker}} = lists:keysearch(WPid,1,get_loaders(State0)),
add_loader(Tab,Worker,State1);
_ ->
- State1
+ DelState = State1#state{late_loader_queue=gb_trees:delete_any(Tab, LateQueue0)},
+ case ?catch_val({Tab, storage_type}) of
+ ram_copies ->
+ cast({disc_load, Tab, ram_only}),
+ DelState;
+ _ ->
+ DelState
+ end
end
end,
State3 = opt_start_worker(State2),