feat(dsrepl): use more straightforward way to drop ra shards

This commit is contained in:
Andrew Mayorov 2024-03-08 17:37:28 +01:00
parent 74881e8706
commit 611b3f0e07
No known key found for this signature in database
GPG Key ID: 2837C62ACFBFED5D
3 changed files with 15 additions and 12 deletions

View File

@ -295,6 +295,7 @@ drop_db(DB) ->
undefined ->
ok;
Module ->
_ = persistent_term:erase(?persistent_term(DB)),
Module:drop_db(DB)
end.

View File

@ -196,11 +196,11 @@ drop_generation(DB, {Shard, GenId}) ->
-spec drop_db(emqx_ds:db()) -> ok | {error, _}.
drop_db(DB) ->
Nodes = list_nodes(),
_ = emqx_ds_proto_v4:drop_db(Nodes, DB),
_ = emqx_ds_replication_layer_meta:drop_db(DB),
emqx_ds_builtin_sup:stop_db(DB),
ok.
foreach_shard(DB, fun(Shard) ->
{ok, _} = ra_drop_shard(DB, Shard)
end),
_ = emqx_ds_proto_v4:drop_db(list_nodes(), DB),
emqx_ds_replication_layer_meta:drop_db(DB).
-spec store_batch(emqx_ds:db(), [emqx_types:message(), ...], emqx_ds:message_store_opts()) ->
emqx_ds:store_batch_result().
@ -357,8 +357,7 @@ do_drop_db_v1(DB) ->
emqx_ds_builtin_sup:stop_db(DB),
lists:foreach(
fun(Shard) ->
emqx_ds_storage_layer:drop_shard({DB, Shard}),
ra_drop_shard(DB, Shard)
emqx_ds_storage_layer:drop_shard({DB, Shard})
end,
MyShards
).
@ -492,8 +491,6 @@ do_get_delete_streams_v4(DB, Shard, TopicFilter, StartTime) ->
list_nodes() ->
mria:running_nodes().
%%
%% TODO
%% Too large for normal operation, need better backpressure mechanism.
-define(RA_TIMEOUT, 60 * 1000).
@ -592,8 +589,7 @@ ra_list_generations_with_lifetimes(DB, Shard) ->
).
ra_drop_shard(DB, Shard) ->
LocalServer = emqx_ds_replication_layer_shard:server(DB, Shard, local),
ra:force_delete_server(_System = default, LocalServer).
ra:delete_cluster(emqx_ds_replication_layer_shard:shard_servers(DB, Shard), ?RA_TIMEOUT).
%%

View File

@ -17,8 +17,14 @@
-module(emqx_ds_replication_layer_shard).
-export([start_link/3]).
-export([shard_servers/2]).
%% Static server configuration
-export([
shard_servers/2,
local_server/2
]).
%% Dynamic server location API
-export([
servers/3,
server/3