summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErlang/OTP <otp@erlang.org>2017-12-18 15:36:32 +0100
committerErlang/OTP <otp@erlang.org>2017-12-18 15:36:32 +0100
commit3ed6eaf7541f861fbeb9a7e847474ad671aae7f5 (patch)
tree506601181df7f51245dc2b1c2f70f5ef6f7dc625
parent59fbff220a6b2ac2f59eaecd480a417b4e24b8bf (diff)
parente038b56530804a3e59cc8832db64e021b4b33d25 (diff)
downloaderlang-3ed6eaf7541f861fbeb9a7e847474ad671aae7f5.tar.gz
Merge branch 'dgud/mnesia/checkpoint-crash/OTP-14841' into maint-20
* dgud/mnesia/checkpoint-crash/OTP-14841: mnesia: Fix checkpoint crash
-rw-r--r--lib/mnesia/src/mnesia_checkpoint.erl4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/mnesia/src/mnesia_checkpoint.erl b/lib/mnesia/src/mnesia_checkpoint.erl
index 2ff77326a9..8112378ffd 100644
--- a/lib/mnesia/src/mnesia_checkpoint.erl
+++ b/lib/mnesia/src/mnesia_checkpoint.erl
@@ -857,9 +857,9 @@ retainer_loop(Cp = #checkpoint_args{is_activated=false, name=Name}) ->
retainer_loop(Cp = #checkpoint_args{name=Name}) ->
receive
{_From, {retain, Tid, Tab, Key, OldRecs}} ->
- R = val({Tab, {retainer, Name}}),
+ R = ?catch_val({Tab, {retainer, Name}}),
PendingTab = Cp#checkpoint_args.pending_tab,
- case R#retainer.really_retain of
+ case is_record(R, retainer) andalso R#retainer.really_retain of
true ->
Store = R#retainer.store,
try true = ets:member(PendingTab, Tid),