summaryrefslogtreecommitdiff
path: root/merge/src/merge_fetch_newentries.erl
diff options
context:
space:
mode:
authorMagnus Ahltorp <map@kth.se>2017-07-28 13:38:43 +0200
committerMagnus Ahltorp <map@kth.se>2017-07-28 13:38:43 +0200
commit11e0bdd000dad72ed4c46d419e253ee0caefbc2b (patch)
tree3c886c080433ce70bd23d682c730d232f2e87a3b /merge/src/merge_fetch_newentries.erl
parent489df8ecaf16ca7429eb15b31ffbe6f686f5b0d1 (diff)
Still WIPmergefetch
Diffstat (limited to 'merge/src/merge_fetch_newentries.erl')
-rw-r--r--merge/src/merge_fetch_newentries.erl26
1 files changed, 25 insertions, 1 deletions
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) ->