From c5506779dac2d13ca407ae26f97ba6e6e85a6ad7 Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Wed, 8 Feb 2017 02:08:40 +0100 Subject: merge_backup: Do not read logorder past what fetched indicates. --- merge/src/merge_backup.erl | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) (limited to 'merge/src/merge_backup.erl') 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 -- cgit v1.1