From 970eb263db9b0465d299f67d44fcfc97609048e5 Mon Sep 17 00:00:00 2001 From: Scott Lystig Fritchie Date: Fri, 19 Sep 2014 18:03:24 +0900 Subject: [PATCH] Fix bug in backpointer handling, derp! --- prototype/tango-prototype/src/tango_dt.erl | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/prototype/tango-prototype/src/tango_dt.erl b/prototype/tango-prototype/src/tango_dt.erl index 9db204b..ba4296a 100644 --- a/prototype/tango-prototype/src/tango_dt.erl +++ b/prototype/tango-prototype/src/tango_dt.erl @@ -75,7 +75,7 @@ checkpoint(Pid) -> init([PageSize, SequencerPid, Proj, CallbackMod, StreamNum]) -> LastLPN = find_last_lpn(SequencerPid), - {BackPs, Pages} = fetch_unread_pages(Proj, LastLPN, 0, StreamNum), + {BackPs, Pages} = fetch_unread_pages(Proj, LastLPN, 0, [], StreamNum), I_State = play_log_pages(Pages, CallbackMod:fresh(), CallbackMod, false), {ok, #state{page_size=PageSize, seq=SequencerPid, @@ -153,17 +153,18 @@ fetch_unread_pages(LastLPN, State) -> fetch_unread_pages2(LastLPN, State). fetch_unread_pages2(LastLPN, - #state{proj=Proj, stream_num=StreamNum, + #state{proj=Proj, stream_num=StreamNum, back_ps=OldBackPs, last_read_lpn=StopAtLPN} = State) -> - {BackPs, Pages} = fetch_unread_pages(Proj, LastLPN, StopAtLPN, StreamNum), + {BackPs, Pages} = fetch_unread_pages(Proj, LastLPN, StopAtLPN, + OldBackPs, StreamNum), {Pages, State#state{last_read_lpn=LastLPN, back_ps=BackPs}}. -fetch_unread_pages(Proj, LastLPN, StopAtLPN, StreamNum) -> +fetch_unread_pages(Proj, LastLPN, StopAtLPN, OldBackPs, StreamNum) -> LPNandPages = tango:scan_backward(Proj, StreamNum, LastLPN, StopAtLPN, true), {LPNs, Pages} = lists:unzip(LPNandPages), BackPs = lists:foldl(fun(P, BPs) -> tango:add_back_pointer(BPs, P) end, - [], LPNs), + OldBackPs, LPNs), {BackPs, Pages}. play_log_pages(Pages, SideEffectsP,