summaryrefslogtreecommitdiff
path: root/src/db.erl
diff options
context:
space:
mode:
authorMagnus Ahltorp <map@kth.se>2015-03-25 14:14:42 +0100
committerMagnus Ahltorp <map@kth.se>2015-03-25 14:23:21 +0100
commit44d18b6db6d9747fdf402393832e719975b508a6 (patch)
tree2ad8a26def7a407255e86ab94a6fe9ece3bf47fc /src/db.erl
parent4d586a032257ee600e2191e7e701243cd8f7e92c (diff)
Read db size from sth file and cache
Diffstat (limited to 'src/db.erl')
-rw-r--r--src/db.erl24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/db.erl b/src/db.erl
index daa581c..707c8d3 100644
--- a/src/db.erl
+++ b/src/db.erl
@@ -6,6 +6,7 @@
%% API.
-export([start_link/0, stop/0]).
+-export([create_size_table/0]).
-export([add/2, add_entryhash/2, add_index_nosync/2, set_treesize/1, size/0]).
-export([get_by_index/1, get_by_indices/3, get_by_leaf_hash/1]).
-export([get_by_entry_hash/1, entry_for_leafhash/1, leafhash_for_index/1]).
@@ -19,8 +20,11 @@
-include_lib("stdlib/include/qlc.hrl").
-include("db.hrl").
+-define(DB_SIZE_TABLE, db_size).
+
size() ->
- binary_to_integer(atomic:readfile(treesize_path())).
+ [{_, Size}] = ets:lookup(?DB_SIZE_TABLE, db_size),
+ Size.
indexsize() ->
index:indexsize(index_path()).
@@ -28,6 +32,15 @@ indexsize() ->
init(_Args) ->
{ok, []}.
+create_size_table() ->
+ case ets:info(?DB_SIZE_TABLE) of
+ undefined ->
+ ok;
+ _ ->
+ ets:delete(?DB_SIZE_TABLE)
+ end,
+ ets:new(?DB_SIZE_TABLE, [set, public, named_table]).
+
start_link() ->
gen_server:start_link({local, ?MODULE}, ?MODULE, [], []).
@@ -55,7 +68,8 @@ add_index_nosync(LeafHash, Index) ->
-spec set_treesize(non_neg_integer()) -> ok.
set_treesize(Size) ->
- ok = atomic:replacefile(treesize_path(), integer_to_binary(Size)).
+ true = ets:insert(?DB_SIZE_TABLE, {db_size, Size}),
+ ok.
-spec get_by_indices(integer(), integer(), {sorted, true|false}) ->
[{non_neg_integer(), binary(), binary()}].
@@ -138,12 +152,6 @@ entryhash_root_path() ->
{ok, Value} = application:get_env(plop, entryhash_root_path),
Value.
-% File that stores tree size
-treesize_path() ->
- {ok, Value} = application:get_env(plop, treesize_path),
- Value.
-
-
entry_for_leafhash(LeafHash) ->
perm:readfile(entry_root_path(), LeafHash).