diff --git a/src/mnesia_rocksdb_admin.erl b/src/mnesia_rocksdb_admin.erl index 73953e3..0256417 100644 --- a/src/mnesia_rocksdb_admin.erl +++ b/src/mnesia_rocksdb_admin.erl @@ -1496,7 +1496,7 @@ open_db_(MP, Alias, Opts, CFs0, CreateIfMissing) -> true -> %% Assumption: even an old rocksdb database file will have at least "default" {ok,CFs} = rocksdb:list_column_families(MP, Opts), - CFs1 = [{CF,[]} || CF <- CFs], %% TODO: this really needs more checking + CFs1 = [{CF, cfopts()} || CF <- CFs], %% TODO: this really needs more checking map_cfs(rocksdb_open(MP, Opts, CFs1), CFs1, Alias, Acc0) end. diff --git a/test/mnesia_rocksdb_SUITE.erl b/test/mnesia_rocksdb_SUITE.erl index 7bba6ab..5f84404 100644 --- a/test/mnesia_rocksdb_SUITE.erl +++ b/test/mnesia_rocksdb_SUITE.erl @@ -27,6 +27,9 @@ , mrdb_two_procs_tx_inner_restart/1 , mrdb_two_procs_snap/1 , mrdb_three_procs/1 + , create_counters/1 + , update_counters/1 + , restart_node/1 ]). -include_lib("common_test/include/ct.hrl"). @@ -42,7 +45,8 @@ all() -> groups() -> [ {all_tests, [sequence], [ {group, checks} - , {group, mrdb} ]} + , {group, mrdb} + , {group, counters}]} %% , error_handling ]} , {checks, [sequence], [ encoding_sext_attrs , encoding_binary_binary @@ -57,6 +61,10 @@ groups() -> , mrdb_two_procs_tx_inner_restart , mrdb_two_procs_snap , mrdb_three_procs ]} + , {counters, [sequence], [ create_counters + , update_counters + , restart_node + , update_counters ]} ]. @@ -749,6 +757,35 @@ get_attempt() -> #{activity := #{attempt := Attempt}} = mrdb:current_context(), Attempt. +create_counters(_Config) -> + create_tab(counters, []), + mrdb:insert(counters, {counters, c0, 1}), + mrdb:update_counter(counters, c1, 1), + [{counters, c0, 1}] = mrdb:read(counters, c0), + [{counters, c1, 1}] = mrdb:read(counters, c1), + ct:log("Created tab counters, with objs c0 (1) and c1 (1)", []), + ok. + +restart_node(_Config) -> + mnesia:stop(), + ok = mnesia:start(), + ct:log("mnesia restarted", []), + ok. + +update_counters(_Config) -> + [{counters, c0, C0Prev}] = mrdb:read(counters, c0), + [{counters, c1, C1Prev}] = mrdb:read(counters, c1), + ct:log("co: ~p, c1: ~p", [C0Prev, C1Prev]), + ok = mrdb:update_counter(counters, c0, 1), + ok = mrdb:update_counter(counters, c1, 1), + ct:log("Incremented c0 and c1 by 1", []), + C0 = C0Prev + 1, + C1 = C1Prev + 1, + [{counters, c0, C0}] = mrdb:read(counters, c0), + [{counters, c1, C1}] = mrdb:read(counters, c1), + ct:log("c0: ~p, c1: ~p", [C0, C1]), + ok. + create_tabs(Tabs, Config) -> Res = lists:map(fun create_tab/1, Tabs), tr_ct:trace_checkpoint(?TABS_CREATED, Config),