Fix bug in backpointer handling, derp!
This commit is contained in:
parent
004a18d948
commit
970eb263db
1 changed files with 6 additions and 5 deletions
|
@ -75,7 +75,7 @@ checkpoint(Pid) ->
|
||||||
|
|
||||||
init([PageSize, SequencerPid, Proj, CallbackMod, StreamNum]) ->
|
init([PageSize, SequencerPid, Proj, CallbackMod, StreamNum]) ->
|
||||||
LastLPN = find_last_lpn(SequencerPid),
|
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),
|
I_State = play_log_pages(Pages, CallbackMod:fresh(), CallbackMod, false),
|
||||||
{ok, #state{page_size=PageSize,
|
{ok, #state{page_size=PageSize,
|
||||||
seq=SequencerPid,
|
seq=SequencerPid,
|
||||||
|
@ -153,17 +153,18 @@ fetch_unread_pages(LastLPN, State) ->
|
||||||
fetch_unread_pages2(LastLPN, State).
|
fetch_unread_pages2(LastLPN, State).
|
||||||
|
|
||||||
fetch_unread_pages2(LastLPN,
|
fetch_unread_pages2(LastLPN,
|
||||||
#state{proj=Proj, stream_num=StreamNum,
|
#state{proj=Proj, stream_num=StreamNum, back_ps=OldBackPs,
|
||||||
last_read_lpn=StopAtLPN} = State) ->
|
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}}.
|
{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,
|
LPNandPages = tango:scan_backward(Proj, StreamNum, LastLPN,
|
||||||
StopAtLPN, true),
|
StopAtLPN, true),
|
||||||
{LPNs, Pages} = lists:unzip(LPNandPages),
|
{LPNs, Pages} = lists:unzip(LPNandPages),
|
||||||
BackPs = lists:foldl(fun(P, BPs) -> tango:add_back_pointer(BPs, P) end,
|
BackPs = lists:foldl(fun(P, BPs) -> tango:add_back_pointer(BPs, P) end,
|
||||||
[], LPNs),
|
OldBackPs, LPNs),
|
||||||
{BackPs, Pages}.
|
{BackPs, Pages}.
|
||||||
|
|
||||||
play_log_pages(Pages, SideEffectsP,
|
play_log_pages(Pages, SideEffectsP,
|
||||||
|
|
Loading…
Reference in a new issue