Parcourir la source

chore(dsrepl): sprinkle few comments and typespecs for exports

Andrew Mayorov il y a 1 an
Parent
commit
2ace9bb893

+ 20 - 0
apps/emqx_durable_storage/src/emqx_ds_replication_layer_shard.erl

@@ -139,6 +139,11 @@ local_site() ->
 
 %%
 
+%% @doc Add a local server to the shard cluster.
+%% It's recommended to have the local server running before calling this function.
+%% This function is idempotent.
+-spec add_local_server(emqx_ds:db(), emqx_ds_replication_layer:shard_id()) ->
+    ok | emqx_ds:error(_Reason).
 add_local_server(DB, Shard) ->
     %% NOTE
     %% Adding local server as "promotable" member to the cluster, which means
@@ -170,6 +175,11 @@ add_local_server(DB, Shard) ->
             {error, recoverable, Reason}
     end.
 
+%% @doc Remove a local server from the shard cluster and clean up on-disk data.
+%% It's required to have the local server running before calling this function.
+%% This function is idempotent.
+-spec drop_local_server(emqx_ds:db(), emqx_ds_replication_layer:shard_id()) ->
+    ok | emqx_ds:error(_Reason).
 drop_local_server(DB, Shard) ->
     LocalServer = local_server(DB, Shard),
     case remove_server(DB, Shard, LocalServer) of
@@ -179,6 +189,12 @@ drop_local_server(DB, Shard) ->
             Error
     end.
 
+%% @doc Remove a (remote) server from the shard cluster.
+%% The server might not be running when calling this function, e.g. the node
+%% might be offline. Because of this, on-disk data will not be cleaned up.
+%% This function is idempotent.
+-spec remove_server(emqx_ds:db(), emqx_ds_replication_layer:shard_id(), server()) ->
+    ok | emqx_ds:error(_Reason).
 remove_server(DB, Shard, Server) ->
     ShardServers = shard_servers(DB, Shard),
     case ra:remove_member(ShardServers, Server, ?MEMBERSHIP_CHANGE_TIMEOUT) of
@@ -190,6 +206,10 @@ remove_server(DB, Shard, Server) ->
             {error, recoverable, Reason}
     end.
 
+-spec server_info
+    (readiness, server()) -> ready | {unready, _Status, _Membership} | unknown;
+    (leader, server()) -> server() | unknown;
+    (uid, server()) -> _UID :: binary() | unknown.
 server_info(readiness, Server) ->
     %% NOTE
     %% Server is ready if it's either the leader or a follower with voter "membership"