From bb8ffee18c65e08f33f588570619da75b9f558db Mon Sep 17 00:00:00 2001 From: Andrew Mayorov Date: Tue, 2 Apr 2024 17:13:47 +0200 Subject: [PATCH] feat(dsrepl): add API to get current DB replication sites --- .../src/emqx_ds_replication_layer_meta.erl | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/apps/emqx_durable_storage/src/emqx_ds_replication_layer_meta.erl b/apps/emqx_durable_storage/src/emqx_ds_replication_layer_meta.erl index 723675699..5e0a2798b 100644 --- a/apps/emqx_durable_storage/src/emqx_ds_replication_layer_meta.erl +++ b/apps/emqx_durable_storage/src/emqx_ds_replication_layer_meta.erl @@ -49,6 +49,7 @@ assign_db_sites/2, replica_set_transitions/2, update_replica_set/3, + db_sites/1, replica_set/2, target_set/2 ]). @@ -243,6 +244,17 @@ assign_db_sites(DB, Sites) -> {error, Reason} end. +-spec db_sites(emqx_ds:db()) -> [site()]. +db_sites(DB) -> + Recs = mnesia:dirty_match_object(?SHARD_TAB, ?SHARD_PAT({DB, '_'})), + lists:foldl( + fun(#?SHARD_TAB{replica_set = RS}, Acc) -> + ordsets:union(ordsets:from_list(RS), Acc) + end, + ordsets:new(), + Recs + ). + -spec replica_set_transitions(emqx_ds:db(), emqx_ds_replication_layer:shard_id()) -> [transition()] | undefined. replica_set_transitions(DB, Shard) ->