From 62c3ba8b6fd1dab3eb0243b19800e9b9169f18de Mon Sep 17 00:00:00 2001 From: martinsumner Date: Mon, 13 Mar 2017 11:54:46 +0000 Subject: [PATCH] Passing ETS reference not tree ETS reference gets converted to tree by Penciller --- src/leveled_bookie.erl | 2 +- src/leveled_penciller.erl | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/leveled_bookie.erl b/src/leveled_bookie.erl index 5d441da..b450bcc 100644 --- a/src/leveled_bookie.erl +++ b/src/leveled_bookie.erl @@ -1181,7 +1181,7 @@ maybepush_ledgercache(MaxCacheSize, Cache, Penciller) -> TimeToPush = maybe_withjitter(CacheSize, MaxCacheSize), if TimeToPush -> - CacheToLoad = {leveled_tree:from_orderedset(Tab, ?CACHE_TYPE), + CacheToLoad = {Tab, Cache#ledger_cache.index, Cache#ledger_cache.min_sqn, Cache#ledger_cache.max_sqn}, diff --git a/src/leveled_penciller.erl b/src/leveled_penciller.erl index 2f5c1a5..bb67e21 100644 --- a/src/leveled_penciller.erl +++ b/src/leveled_penciller.erl @@ -341,7 +341,7 @@ init([PCLopts]) -> end. -handle_call({push_mem, {PushedTree, PushedIdx, MinSQN, MaxSQN}}, +handle_call({push_mem, {LedgerTable, PushedIdx, MinSQN, MaxSQN}}, From, State=#state{is_snapshot=Snap}) when Snap == false -> % The push_mem process is as follows: @@ -370,7 +370,16 @@ handle_call({push_mem, {PushedTree, PushedIdx, MinSQN, MaxSQN}}, {reply, returned, State}; false -> leveled_log:log("P0018", [ok, false, false]), - gen_server:reply(From, ok), + PushedTree = + case is_tuple(LedgerTable) of + true -> + LedgerTable; + false -> + leveled_tree:from_orderedset(LedgerTable, + ?CACHE_TYPE) + end, + % Reply ust happen after the table has been converted + gen_server:reply(From, ok), {noreply, update_levelzero(State#state.levelzero_size, {PushedTree, PushedIdx, MinSQN, MaxSQN},