feat(dsrepl): add API to get current DB replication sites

This commit is contained in:
Andrew Mayorov 2024-04-02 17:13:47 +02:00
parent ad52f7838e
commit bb8ffee18c
No known key found for this signature in database
GPG Key ID: 2837C62ACFBFED5D
1 changed files with 12 additions and 0 deletions

View File

@ -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) ->