summaryrefslogtreecommitdiff
path: root/src/db.erl
diff options
context:
space:
mode:
authorMagnus Ahltorp <map@kth.se>2014-10-19 01:37:29 +0200
committerLinus Nordberg <linus@nordberg.se>2014-10-29 14:37:53 +0100
commit5b76ecb4c8e237d513c0d8e8b93c7475dadb6fe9 (patch)
treeba4af38d8ce07721db7045ae365b0ab40ce91b8a /src/db.erl
parent4a48f6820bd2ef841de148564f7c11de0bb96356 (diff)
Prepare for external-merge.
db:get_by_leaf_hash(): Return notfound instead of crashing when no entry could be found. db:get_by_entry_hash(): Don't fetch index, isn't used and might not exist. index:add(): Allow writes at exiting indicies. Conflicts: src/index.erl
Diffstat (limited to 'src/db.erl')
-rw-r--r--src/db.erl25
1 files changed, 19 insertions, 6 deletions
diff --git a/src/db.erl b/src/db.erl
index a0855b9..640718c 100644
--- a/src/db.erl
+++ b/src/db.erl
@@ -103,7 +103,12 @@ entry_for_leafhash(LeafHash) ->
perm:readfile(entry_root_path(), LeafHash).
index_for_leafhash(LeafHash) ->
- binary_to_integer(perm:readfile(indexforhash_root_path(), LeafHash)).
+ case perm:readfile(indexforhash_root_path(), LeafHash) of
+ noentry ->
+ noentry;
+ Index ->
+ binary_to_integer(Index)
+ end.
leafhash_for_index(Index) ->
index:get(index_path(), Index).
@@ -150,9 +155,17 @@ handle_call({get_by_index, Index}, _From, State) ->
{reply, R, State};
handle_call({get_by_leaf_hash, LeafHash}, _From, State) ->
- Entry = entry_for_leafhash(LeafHash),
- Index = index_for_leafhash(LeafHash),
- R = {Index, LeafHash, Entry},
+ R = case entry_for_leafhash(LeafHash) of
+ noentry ->
+ notfound;
+ Entry ->
+ case index_for_leafhash(LeafHash) of
+ noentry ->
+ notfound;
+ Index ->
+ {Index, LeafHash, Entry}
+ end
+ end,
{reply, R, State};
handle_call({get_by_entry_hash, EntryHash}, _From, State) ->
@@ -161,7 +174,7 @@ handle_call({get_by_entry_hash, EntryHash}, _From, State) ->
notfound;
LeafHash ->
Entry = entry_for_leafhash(LeafHash),
- Index = index_for_leafhash(LeafHash),
- {Index, LeafHash, Entry}
+ %% Don't fetch index, isn't used and might not exist
+ {notfetched, LeafHash, Entry}
end,
{reply, R, State}.