From b908998e6befed8b9a289d0da985872b9f632751 Mon Sep 17 00:00:00 2001 From: Ulf Wiger Date: Tue, 2 Aug 2022 17:07:53 +0200 Subject: [PATCH] Check pdict for dumper state at close_table --- src/mnesia_rocksdb.erl | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/src/mnesia_rocksdb.erl b/src/mnesia_rocksdb.erl index 9665279..e7b1e2f 100644 --- a/src/mnesia_rocksdb.erl +++ b/src/mnesia_rocksdb.erl @@ -162,7 +162,6 @@ , type , status , on_error - , loaders = [] }). -type data_tab() :: atom(). @@ -452,8 +451,13 @@ close_table(Alias, Tab) -> error -> ok; _ -> - ok = mnesia_rocksdb_admin:prep_close(Alias, Tab), - close_table_(Alias, Tab) + case get(mnesia_dumper_dets) of + undefined -> + ok = mnesia_rocksdb_admin:prep_close(Alias, Tab), + close_table_(Alias, Tab); + _ -> + ok + end end. close_table_(Alias, Tab) -> @@ -799,7 +803,7 @@ handle_call({create_table, Tab, Props}, _From, handle_call({load_table, _LoadReason, Props}, {Pid,_}, #st{alias = Alias, tab = Tab} = St) -> {ok, _Ref} = mnesia_rocksdb_admin:load_table(Alias, Tab, Props), - {reply, ok, St#st{status = active, loaders = [Pid|St#st.loaders]}}; + {reply, ok, St#st{status = active}}; handle_call({write_info, Key, Value}, _From, #st{tab = Tab} = St) -> mrdb:write_info(get_ref(Tab), Key, Value), {reply, ok, St}; @@ -824,14 +828,9 @@ handle_call({delete, Key}, _From, St) -> handle_call({match_delete, Pat}, _From, #st{tab = Tab} = St) -> Res = mrdb:match_delete(get_ref(Tab), Pat), {reply, Res, St}; -handle_call(close_table, {Pid,_}, #st{alias = Alias, tab = Tab, loaders = Ls} = St) -> - case Ls -- [Pid] of - [] -> - _ = mnesia_rocksdb_admin:close_table(Alias, Tab), - {reply, ok, St#st{status = undefined, loaders = []}}; - Ls1 -> - {reply, ok, St#st{loaders = Ls1}} - end; +handle_call(close_table, {Pid,_}, #st{alias = Alias, tab = Tab} = St) -> + _ = mnesia_rocksdb_admin:close_table(Alias, Tab), + {reply, ok, St#st{status = undefined}}; handle_call(delete_table, _From, #st{alias = Alias, tab = Tab} = St) -> ok = mnesia_rocksdb_admin:delete_table(Alias, Tab), {stop, normal, ok, St#st{status = undefined}}.