diff options
-rw-r--r-- | Emakefile | 1 | ||||
-rw-r--r-- | Makefile | 1 | ||||
-rw-r--r-- | merge/src/merge_backup.erl | 30 | ||||
-rw-r--r-- | merge/src/merge_sup.erl | 4 | ||||
-rw-r--r-- | merge/src/merge_util.erl | 25 | ||||
-rw-r--r-- | src/plop.erl | 2 |
6 files changed, 34 insertions, 29 deletions
@@ -7,5 +7,6 @@ {["merge/src/*"], [debug_info, {i, "../"}, % For hackney. + {i, "src/"}, % For plop.hrl. {outdir, "merge/ebin/"}, {parse_transform, lager_transform}]}. @@ -10,6 +10,7 @@ clean: (cd c_src && make clean) -rm priv/fsynchelper -rm ebin/*.beam + -rm merge/ebin/*.beam dialyze: build dialyzer ebin merge/ebin tags: diff --git a/merge/src/merge_backup.erl b/merge/src/merge_backup.erl index bd75608..5f4f3d5 100644 --- a/merge/src/merge_backup.erl +++ b/merge/src/merge_backup.erl @@ -28,7 +28,7 @@ handle_cast(_Request, State) -> {noreply, State}. handle_info({timeout, _Timer, backup}, State) -> - backup(fetched(), State). + backup(merge_util:readfile(fetched_path), State). code_change(_OldVsn, State, _Extra) -> {ok, State}. @@ -51,10 +51,10 @@ backup(-1, _, State) -> {noreply, State#state{timer = erlang:start_timer(1000, self(), backup)}}; backup(Index, Hash, #state{node_name = NodeName, node_address = NodeAddress} = State) -> - ok = verify_logorder_and_fetched_consistency(Index, Hash), + ok = merge_util:verify_logorder_and_fetched_consistency(Index, Hash), Size = index:indexsize(logorder), lager:debug("~p: logorder size ~B", [NodeName, Size]), - ht:load_tree(Size - 1), + ht:load_tree(Size - 1), % TODO: Make sure this is OK to do from multiple processes and that it's not "moving backwards". try {ok, VerifiedSize} = verified_size(NodeAddress), lager:debug("~p: verifiedsize ~B", [NodeName, VerifiedSize]), @@ -141,27 +141,3 @@ setverifiedsize(NodeAddress, Size) -> Err -> throw({request_error, result, DebugTag, Err}) end. - -fetched() -> - case application:get_env(plop, fetched_path) of - {ok, FetchedFile} -> - case atomic:readfile(FetchedFile) of - noentry -> - noentry; - Contents -> - mochijson2:decode(Contents) - end; - undefined -> - noentry - end. - -verify_logorder_and_fetched_consistency(Index, Hash) -> - HashString = binary_to_list(Hash), - case hex:bin_to_hexstr(index:get(logorder, Index)) of - HashString -> - ok; - Mismatch -> - lager:error("fetched file hash=~p doesn't match logorder[~B]=~p", - [HashString, Index, Mismatch]), - fetched_mismatch - end. diff --git a/merge/src/merge_sup.erl b/merge/src/merge_sup.erl index d20abf9..72512ba 100644 --- a/merge/src/merge_sup.erl +++ b/merge/src/merge_sup.erl @@ -19,5 +19,7 @@ init([]) -> {merge_backup_sup, {merge_backup_sup, start_link, [[]]}, transient, infinity, supervisor, [merge_backup_sup]}, {merge_dist_sup, {merge_dist_sup, start_link, [[]]}, - transient, infinity, supervisor, [merge_dist_sup]} + transient, infinity, supervisor, [merge_dist_sup]}, + {merge_sth, {merge_sth, start_link, [[]]}, + permanent, 10000, worker, [merge_sth]} ]}}. diff --git a/merge/src/merge_util.erl b/merge/src/merge_util.erl index a6b3ac9..4a4340d 100644 --- a/merge/src/merge_util.erl +++ b/merge/src/merge_util.erl @@ -4,6 +4,7 @@ -module(merge_util). -export([sendlog/4, sendentries/3]). -export([request/2, request/4]). +-export([readfile/1, verify_logorder_and_fetched_consistency/2]). request(DebugTag, URL) -> request(DebugTag, URL, [], <<>>). @@ -72,3 +73,27 @@ sendentries_request(NodeAddress, HashesAndEntries) -> Err -> throw({request_error, result, DebugTag, Err}) end. + +readfile(FileInConfig) -> + case application:get_env(plop, FileInConfig) of + {ok, File} -> + case atomic:readfile(File) of + noentry -> + noentry; + Contents -> + mochijson2:decode(Contents) + end; + undefined -> + noentry + end. + +verify_logorder_and_fetched_consistency(Index, Hash) -> + HashString = binary_to_list(Hash), + case hex:bin_to_hexstr(index:get(logorder, Index)) of + HashString -> + ok; + Mismatch -> + lager:error("fetched file hash=~p doesn't match logorder[~B]=~p", + [HashString, Index, Mismatch]), + fetched_mismatch + end. diff --git a/src/plop.erl b/src/plop.erl index fcc964b..8ce3186 100644 --- a/src/plop.erl +++ b/src/plop.erl @@ -24,7 +24,7 @@ %% API. -export([initsize/0]). --export([get_logid/0, serialise/1]). +-export([get_logid/0, serialise/1, signature_type/1]). -export([add/3, sth/0, get/1, get/2, spt/1, consistency/2, inclusion/2, inclusion_and_entry/2]). -export([generate_timestamp/0, save_sth/1, verify_sth/4]). -export([get_by_leaf_hash/1, entry_for_leafhash/1]). |