diff options
author | Magnus Ahltorp <map@kth.se> | 2014-10-19 01:37:29 +0200 |
---|---|---|
committer | Linus Nordberg <linus@nordberg.se> | 2014-10-29 14:37:53 +0100 |
commit | 5b76ecb4c8e237d513c0d8e8b93c7475dadb6fe9 (patch) | |
tree | ba4af38d8ce07721db7045ae365b0ab40ce91b8a /src/db.erl | |
parent | 4a48f6820bd2ef841de148564f7c11de0bb96356 (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.erl | 25 |
1 files changed, 19 insertions, 6 deletions
@@ -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}. |