diff options
author | Linus Nordberg <linus@nordu.net> | 2017-02-08 02:08:40 +0100 |
---|---|---|
committer | Linus Nordberg <linus@nordu.net> | 2017-02-08 02:08:40 +0100 |
commit | c5506779dac2d13ca407ae26f97ba6e6e85a6ad7 (patch) | |
tree | 28858be0ff31339249766804baed9a98c87714d7 /merge/src/merge_backup.erl | |
parent | ce28e5b6ce3adf400b17f34e006426b411332af4 (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.erl | 16 |
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 |