From 9ad6969b0d384c559413131e9b24f26a9c52da9d Mon Sep 17 00:00:00 2001 From: martinsumner Date: Mon, 6 Mar 2017 21:35:02 +0000 Subject: [PATCH] Seed randomnes at Actor startup --- src/leveled_bookie.erl | 4 +++- src/leveled_inker.erl | 2 ++ src/leveled_log.erl | 4 +--- src/leveled_penciller.erl | 4 +++- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/leveled_bookie.erl b/src/leveled_bookie.erl index 018b6d6..5d441da 100644 --- a/src/leveled_bookie.erl +++ b/src/leveled_bookie.erl @@ -358,6 +358,8 @@ book_destroy(Pid) -> %%%============================================================================ init([Opts]) -> + SW = os:timestamp(), + random:seed(erlang:phash2(self()), element(2, SW), element(3, SW)), case get_opt(snapshot_bookie, Opts) of undefined -> % Start from file not snapshot @@ -635,7 +637,7 @@ snapshot_store(LedgerCache0, Penciller, Inker, SnapType, Query) -> snapshot_query = Query, bookies_mem = BookiesMem}, {ok, LedgerSnapshot} = leveled_penciller:pcl_start(PCLopts), - leveled_log:log_randomtimer("B0004", [cache_size(LedgerCache)], SW, 0.1), + leveled_log:log_randomtimer("B0004", [cache_size(LedgerCache)], SW, 0.02), case SnapType of store -> InkerOpts = #inker_options{start_snapshot=true, diff --git a/src/leveled_inker.erl b/src/leveled_inker.erl index 540e70f..f4b2f33 100644 --- a/src/leveled_inker.erl +++ b/src/leveled_inker.erl @@ -222,6 +222,8 @@ ink_print_manifest(Pid) -> %%%============================================================================ init([InkerOpts]) -> + SW = os:timestamp(), + random:seed(erlang:phash2(self()), element(2, SW), element(3, SW)), case {InkerOpts#inker_options.root_path, InkerOpts#inker_options.start_snapshot} of {undefined, true} -> diff --git a/src/leveled_log.erl b/src/leveled_log.erl index ad6ed64..c89fbea 100644 --- a/src/leveled_log.erl +++ b/src/leveled_log.erl @@ -353,9 +353,7 @@ log_timer(LogReference, Subs, StartTime) -> end. log_randomtimer(LogReference, Subs, StartTime, RandomProb) -> - {R, _S} = random:uniform_s({erlang:phash2(self()), - element(2, StartTime), - element(3, StartTime)}), + R = random:uniform(), case R < RandomProb of true -> log_timer(LogReference, Subs, StartTime); diff --git a/src/leveled_penciller.erl b/src/leveled_penciller.erl index 292d44c..ccddbe5 100644 --- a/src/leveled_penciller.erl +++ b/src/leveled_penciller.erl @@ -321,6 +321,8 @@ pcl_doom(Pid) -> %%%============================================================================ init([PCLopts]) -> + SW = os:timestamp(), + random:seed(erlang:phash2(self()), element(2, SW), element(3, SW)), case {PCLopts#penciller_options.root_path, PCLopts#penciller_options.start_snapshot, PCLopts#penciller_options.snapshot_query, @@ -405,7 +407,7 @@ handle_call({fetch_keys, StartKey, EndKey, AccFun, InitAcc, MaxKeys}, List -> List end, - leveled_log:log_randomtimer("P0037", [length(L0AsList)], SW, 0.1), + leveled_log:log_randomtimer("P0037", [length(L0AsList)], SW, 0.01), SetupFoldFun = fun(Level, Acc) -> Pointers = leveled_pmanifest:range_lookup(State#state.manifest,