summaryrefslogtreecommitdiff
path: root/merge/src/merge_backup.erl
diff options
context:
space:
mode:
authorLinus Nordberg <linus@nordu.net>2017-02-08 02:08:40 +0100
committerLinus Nordberg <linus@nordu.net>2017-02-08 02:08:40 +0100
commitc5506779dac2d13ca407ae26f97ba6e6e85a6ad7 (patch)
tree28858be0ff31339249766804baed9a98c87714d7 /merge/src/merge_backup.erl
parentce28e5b6ce3adf400b17f34e006426b411332af4 (diff)
merge_backup: Do not read logorder past what fetched indicates.
Diffstat (limited to 'merge/src/merge_backup.erl')
-rw-r--r--merge/src/merge_backup.erl16
1 files changed, 3 insertions, 13 deletions
diff --git a/merge/src/merge_backup.erl b/merge/src/merge_backup.erl
index 5f4f3d5..768bd32 100644
--- a/merge/src/merge_backup.erl
+++ b/merge/src/merge_backup.erl
@@ -28,7 +28,7 @@ handle_cast(_Request, State) ->
{noreply, State}.
handle_info({timeout, _Timer, backup}, State) ->
- backup(merge_util:readfile(fetched_path), State).
+ backup(merge_util:nfetched(), State).
code_change(_OldVsn, State, _Extra) ->
{ok, State}.
@@ -40,19 +40,9 @@ terminate(Reason, #state{timer = Timer}) ->
%%%%%%%%%%%%%%%%%%%%
-backup(noentry, State) ->
+backup(Size, State) when Size < 0 ->
{noreply, State#state{timer = erlang:start_timer(1000, self(), backup)}};
-backup({struct, Fetched}, State) ->
- Index = proplists:get_value(<<"index">>, Fetched),
- Hash = proplists:get_value(<<"hash">>, Fetched),
- backup(Index, Hash, State).
-
-backup(-1, _, State) ->
- {noreply, State#state{timer = erlang:start_timer(1000, self(), backup)}};
-backup(Index, Hash,
- #state{node_name = NodeName, node_address = NodeAddress} = State) ->
- ok = merge_util:verify_logorder_and_fetched_consistency(Index, Hash),
- Size = index:indexsize(logorder),
+backup(Size, #state{node_name = NodeName, node_address = NodeAddress} = State) ->
lager:debug("~p: logorder size ~B", [NodeName, Size]),
ht:load_tree(Size - 1), % TODO: Make sure this is OK to do from multiple processes and that it's not "moving backwards".
try