Merge pull request #47 from aeternity/uw-robustify-tx-test
Add retry for bleed-through check
This commit is contained in:
commit
f2b6116d31
@ -440,7 +440,10 @@ mrdb_two_procs_tx_inner_restart_(Config) ->
|
|||||||
go_ahead_other(0, P2), % Let P2 commit, then await DOWN (normal)
|
go_ahead_other(0, P2), % Let P2 commit, then await DOWN (normal)
|
||||||
await_other_down(P2, MRef2, ?LINE),
|
await_other_down(P2, MRef2, ?LINE),
|
||||||
PostA = mrdb:read(R, a), % now we should see writes from both P1
|
PostA = mrdb:read(R, a), % now we should see writes from both P1
|
||||||
PostB = mrdb:read(R, b); % ... and P2
|
%% On OTP 23, the following step might fail due to timing, even
|
||||||
|
%% though the trace output looks as expected. Possibly some quirk
|
||||||
|
%% with leakage propagation time in rocksdb. Let's retry to be sure.
|
||||||
|
ok = try_until(PostB, fun() -> mrdb:read(R, b) end); % ... and P2
|
||||||
{1, 1} ->
|
{1, 1} ->
|
||||||
PostA = mrdb:read(R, a),
|
PostA = mrdb:read(R, a),
|
||||||
PostB = mrdb:read(R, b),
|
PostB = mrdb:read(R, b),
|
||||||
@ -460,6 +463,19 @@ mrdb_two_procs_tx_inner_restart_(Config) ->
|
|||||||
delete_tabs(Created),
|
delete_tabs(Created),
|
||||||
ok.
|
ok.
|
||||||
|
|
||||||
|
try_until(Result, F) ->
|
||||||
|
try_until(Result, F, 10).
|
||||||
|
|
||||||
|
try_until(Result, F, N) when N > 0 ->
|
||||||
|
case F() of
|
||||||
|
Result ->
|
||||||
|
ok;
|
||||||
|
_ ->
|
||||||
|
receive after 100 -> ok end,
|
||||||
|
try_until(Result, F, N-1)
|
||||||
|
end;
|
||||||
|
try_until(Result, F, _) ->
|
||||||
|
error({badmatch, {Result, F}}).
|
||||||
|
|
||||||
%
|
%
|
||||||
%% For testing purposes, we use side-effects inside the transactions
|
%% For testing purposes, we use side-effects inside the transactions
|
||||||
@ -633,6 +649,7 @@ dbg_tr_opts() ->
|
|||||||
, {mrdb_mutex_serializer, do, 2, x}
|
, {mrdb_mutex_serializer, do, 2, x}
|
||||||
, {?MODULE, wait_for_other, 2, x}
|
, {?MODULE, wait_for_other, 2, x}
|
||||||
, {?MODULE, go_ahead_other, 1, x}
|
, {?MODULE, go_ahead_other, 1, x}
|
||||||
|
, {?MODULE, try_until, 3, x}
|
||||||
, {mrdb, activity, x} ], tr_opts())).
|
, {mrdb, activity, x} ], tr_opts())).
|
||||||
|
|
||||||
tr_patterns(Mod, Ps, #{patterns := Pats} = Opts) ->
|
tr_patterns(Mod, Ps, #{patterns := Pats} = Opts) ->
|
||||||
|
Loading…
x
Reference in New Issue
Block a user