diff options
author | Magnus Ahltorp <map@kth.se> | 2015-03-25 14:14:42 +0100 |
---|---|---|
committer | Magnus Ahltorp <map@kth.se> | 2015-03-25 14:23:21 +0100 |
commit | 44d18b6db6d9747fdf402393832e719975b508a6 (patch) | |
tree | 2ad8a26def7a407255e86ab94a6fe9ece3bf47fc /src/db.erl | |
parent | 4d586a032257ee600e2191e7e701243cd8f7e92c (diff) |
Read db size from sth file and cache
Diffstat (limited to 'src/db.erl')
-rw-r--r-- | src/db.erl | 24 |
1 files changed, 16 insertions, 8 deletions
@@ -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). |