chore(dsraft): make shard info pterms saner and more visible
This commit is contained in:
parent
5b15886836
commit
4971fd3eaf
|
@ -55,6 +55,8 @@
|
||||||
|
|
||||||
-define(MEMBERSHIP_CHANGE_TIMEOUT, 30_000).
|
-define(MEMBERSHIP_CHANGE_TIMEOUT, 30_000).
|
||||||
|
|
||||||
|
-define(PTERM(DB, SHARD, KEY), {?MODULE, DB, SHARD, KEY}).
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
start_link(DB, Shard, Opts) ->
|
start_link(DB, Shard, Opts) ->
|
||||||
|
@ -164,7 +166,7 @@ local_site() ->
|
||||||
|
|
||||||
-spec shard_info(emqx_ds:db(), emqx_ds_replication_layer:shard_id(), _Info) -> _Value.
|
-spec shard_info(emqx_ds:db(), emqx_ds_replication_layer:shard_id(), _Info) -> _Value.
|
||||||
shard_info(DB, Shard, ready) ->
|
shard_info(DB, Shard, ready) ->
|
||||||
persistent_term:get({?MODULE, DB, Shard}, false).
|
get_shard_info(DB, Shard, ready, false).
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
|
@ -372,8 +374,8 @@ handle_cast(_Msg, State) ->
|
||||||
{noreply, State}.
|
{noreply, State}.
|
||||||
|
|
||||||
terminate(_Reason, {DB, Shard}) ->
|
terminate(_Reason, {DB, Shard}) ->
|
||||||
%% FIXME
|
%% NOTE: Mark as not ready right away.
|
||||||
persistent_term:erase({?MODULE, DB, Shard}),
|
ok = erase_shard_info(DB, Shard),
|
||||||
%% NOTE: Timeouts are ignored, it's a best effort attempt.
|
%% NOTE: Timeouts are ignored, it's a best effort attempt.
|
||||||
catch prep_stop_server(DB, Shard),
|
catch prep_stop_server(DB, Shard),
|
||||||
LocalServer = get_local_server(DB, Shard),
|
LocalServer = get_local_server(DB, Shard),
|
||||||
|
@ -457,8 +459,7 @@ trigger_election(Server) ->
|
||||||
end.
|
end.
|
||||||
|
|
||||||
announce_shard_ready(DB, Shard) ->
|
announce_shard_ready(DB, Shard) ->
|
||||||
%% FIXME
|
set_shard_info(DB, Shard, ready, true).
|
||||||
persistent_term:put({?MODULE, DB, Shard}, true).
|
|
||||||
|
|
||||||
server_uid(_DB, Shard) ->
|
server_uid(_DB, Shard) ->
|
||||||
%% NOTE
|
%% NOTE
|
||||||
|
@ -472,6 +473,22 @@ server_uid(_DB, Shard) ->
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
|
get_shard_info(DB, Shard, K, Default) ->
|
||||||
|
persistent_term:get(?PTERM(DB, Shard, K), Default).
|
||||||
|
|
||||||
|
set_shard_info(DB, Shard, K, V) ->
|
||||||
|
persistent_term:put(?PTERM(DB, Shard, K), V).
|
||||||
|
|
||||||
|
erase_shard_info(DB, Shard) ->
|
||||||
|
lists:foreach(fun(K) -> erase_shard_info(DB, Shard, K) end, [
|
||||||
|
ready
|
||||||
|
]).
|
||||||
|
|
||||||
|
erase_shard_info(DB, Shard, K) ->
|
||||||
|
persistent_term:erase(?PTERM(DB, Shard, K)).
|
||||||
|
|
||||||
|
%%
|
||||||
|
|
||||||
prep_stop_server(DB, Shard) ->
|
prep_stop_server(DB, Shard) ->
|
||||||
prep_stop_server(DB, Shard, 5_000).
|
prep_stop_server(DB, Shard, 5_000).
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue