summaryrefslogtreecommitdiff
path: root/merge/src
diff options
context:
space:
mode:
authorLinus Nordberg <linus@nordu.net>2017-02-23 15:27:32 +0100
committerLinus Nordberg <linus@nordu.net>2017-02-23 15:27:32 +0100
commit26869b8656b644d031e3592653e1ae3c9a30c3c4 (patch)
treefc968e020d5e0ababae5c95288898b542da332dd /merge/src
parent04ab165194db6d3ff86d1d1ff8194f8bc6cb3731 (diff)
Simplify added error handling.
keysearch is as fast as member.
Diffstat (limited to 'merge/src')
-rw-r--r--merge/src/merge_util.erl14
1 files changed, 6 insertions, 8 deletions
diff --git a/merge/src/merge_util.erl b/merge/src/merge_util.erl
index 388c627..0e19e90 100644
--- a/merge/src/merge_util.erl
+++ b/merge/src/merge_util.erl
@@ -68,18 +68,16 @@ sendentries_chunk(_, {[], _}, _) ->
ok;
sendentries_chunk(NodeAddress, {Chunk, Rest}, Chunksize) ->
lager:debug("sending entries chunk: N=~B", [length(Chunk)]),
- Entries = [db:entry_for_leafhash(H) || H <- Chunk],
- HashesAndEntries = lists:zip(Chunk, Entries),
- case lists:member(noentry, Entries) of
- true ->
- Missing = lists:keysearch(noentry, 2, HashesAndEntries),
- lager:error("Entries not in db: ~p", [Missing]),
- {error, entrynotindb};
+ HashesAndEntries = lists:zip(Chunk, [db:entry_for_leafhash(H) || H <- Chunk]),
+ case lists:keysearch(noentry, 2, HashesAndEntries) of
false ->
ok = sendentries_request(NodeAddress, HashesAndEntries),
sendentries_chunk(NodeAddress,
lists:split(min(Chunksize, length(Rest)), Rest),
- Chunksize)
+ Chunksize);
+ Missing ->
+ lager:error("Entries not in db: ~p", [Missing]),
+ {error, entrynotindb}
end.
sendentries_request(NodeAddress, HashesAndEntries) ->