From 11e0bdd000dad72ed4c46d419e253ee0caefbc2b Mon Sep 17 00:00:00 2001 From: Magnus Ahltorp Date: Fri, 28 Jul 2017 13:38:43 +0200 Subject: Still WIP --- merge/src/merge_fetch_newentries.erl | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'merge/src/merge_fetch_newentries.erl') diff --git a/merge/src/merge_fetch_newentries.erl b/merge/src/merge_fetch_newentries.erl index b45aaec..befb3f7 100644 --- a/merge/src/merge_fetch_newentries.erl +++ b/merge/src/merge_fetch_newentries.erl @@ -21,10 +21,34 @@ handle_call(stop, _From, ChildPid) -> exit(ChildPid, stop), {stop, normal, stopped, nil}. +get_newentries(NodeName, NodeAddress) -> + DebugTag = "fetchnewentries", + URL = NodeAddress ++ "fetchnewentries", + case merge_util:request(DebugTag, URL, NodeName) of + {<<"ok">>, PropList} -> + Entries = lists:map(fun (S) -> base64:decode(S) end, proplists:get_value(<<"entries">>, PropList)), + {ok, Entries}; + Err -> + throw({request_error, result, DebugTag, Err}) + end. + loop(Name, Address, Period) -> + receive after Period -> ok end, lager:info("~p:~p: asking storage node at ~p for missing entries", [?MODULE, Name, Address]), - receive after Period -> ok end, + EntriesResult = try + get_newentries(Name, Address) + catch + throw:{request_error,request,Tag,Error2} -> + {error, Tag, Error2} + end, + case EntriesResult of + {ok, Entries} -> + lager:debug("got entries: ~p", [Entries]), + merge_fetch_ctrl:newentries(Entries, Name); + {error, _Tag, Error} -> + lager:info("failed to get entries from ~p: ~p", [Name, Error]) + end, loop(Name, Address, Period). handle_cast(_Request, State) -> -- cgit v1.1