From ac693c0dcbff2e8c994f91b4e2d4cb4dd7ea5ff6 Mon Sep 17 00:00:00 2001 From: Zaiming Shi Date: Mon, 15 Nov 2021 13:20:14 +0100 Subject: [PATCH] refactor(retainer): use ordered_set Mnesia table type ordered_set is compatible to set in all the existing APIs and in addition, it provides a more deterministic traversing cursor in case we want to change the current dirty_select based "select ALL" implementation --- apps/emqx_retainer/src/emqx_retainer_mnesia.erl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/emqx_retainer/src/emqx_retainer_mnesia.erl b/apps/emqx_retainer/src/emqx_retainer_mnesia.erl index 6b5a9ac14..e5e347fdc 100644 --- a/apps/emqx_retainer/src/emqx_retainer_mnesia.erl +++ b/apps/emqx_retainer/src/emqx_retainer_mnesia.erl @@ -48,12 +48,16 @@ create_resource(#{storage_type := StorageType}) -> disc -> disc_copies; disc_only -> disc_only_copies end, + TableType = case StorageType of + disc_only -> set; + _ -> ordered_set + end, StoreProps = [{ets, [compressed, {read_concurrency, true}, {write_concurrency, true}]}, {dets, [{auto_save, 1000}]}], ok = mria:create_table(?TAB, [ - {type, set}, + {type, TableType}, {rlog_shard, ?RETAINER_SHARD}, {storage, Copies}, {record_name, retained},