|
|
@@ -61,37 +61,38 @@ copy_override_conf_from_core_node() ->
|
|
|
nodes => Nodes, failed => Failed, not_ready => NotReady}),
|
|
|
{error, "core node not ready"};
|
|
|
_ ->
|
|
|
- SortFun = fun({ok, #{wall_clock := W1}}, {ok, #{wall_clock := W2}}) -> W1 > W2 end,
|
|
|
+ SortFun = fun({ok, #{wall_clock := W1}},
|
|
|
+ {ok, #{wall_clock := W2}}) -> W1 > W2 end,
|
|
|
[{ok, Info} | _] = lists:sort(SortFun, Ready),
|
|
|
#{node := Node, conf := RawOverrideConf, tnx_id := TnxId} = Info,
|
|
|
- ?SLOG(debug, #{msg => "copy_overide_conf_from_core_node_success", node => Node}),
|
|
|
- ok = emqx_config:save_to_override_conf(RawOverrideConf, #{override_to => cluster}),
|
|
|
+ Msg = #{msg => "copy_overide_conf_from_core_node_success", node => Node},
|
|
|
+ ?SLOG(debug, Msg),
|
|
|
+ ok = emqx_config:save_to_override_conf(RawOverrideConf,
|
|
|
+ #{override_to => cluster}),
|
|
|
{ok, TnxId}
|
|
|
end
|
|
|
end.
|
|
|
|
|
|
get_override_config_file() ->
|
|
|
Node = node(),
|
|
|
+ Role = mria_rlog:role(),
|
|
|
case emqx_app:get_init_config_load_done() of
|
|
|
false -> {error, #{node => Node, msg => "init_conf_load_not_done"}};
|
|
|
- true ->
|
|
|
- case mria_rlog:role() of
|
|
|
- core ->
|
|
|
- case erlang:whereis(emqx_config_handler) of
|
|
|
- undefined -> {error, #{node => Node, msg => "emqx_config_handler_not_ready"}};
|
|
|
- _ ->
|
|
|
- Fun = fun() ->
|
|
|
- TnxId = emqx_cluster_rpc:get_node_tnx_id(Node),
|
|
|
- WallClock = erlang:statistics(wall_clock),
|
|
|
- Conf = emqx_config_handler:get_raw_cluster_override_conf(),
|
|
|
- #{wall_clock => WallClock, conf => Conf, tnx_id => TnxId, node => Node}
|
|
|
- end,
|
|
|
- case mria:ro_transaction(?CLUSTER_RPC_SHARD, Fun) of
|
|
|
- {atomic, Res} -> {ok, Res};
|
|
|
- {aborted, Reason} -> {error, #{node => Node, msg => Reason}}
|
|
|
- end
|
|
|
- end;
|
|
|
- replicant ->
|
|
|
- {ignore, #{node => Node}}
|
|
|
- end
|
|
|
+ true when Role =:= core ->
|
|
|
+ case erlang:whereis(emqx_config_handler) of
|
|
|
+ undefined -> {error, #{node => Node, msg => "emqx_config_handler_not_ready"}};
|
|
|
+ _ ->
|
|
|
+ Fun = fun() ->
|
|
|
+ TnxId = emqx_cluster_rpc:get_node_tnx_id(Node),
|
|
|
+ WallClock = erlang:statistics(wall_clock),
|
|
|
+ Conf = emqx_config_handler:get_raw_cluster_override_conf(),
|
|
|
+ #{wall_clock => WallClock, conf => Conf, tnx_id => TnxId, node => Node}
|
|
|
+ end,
|
|
|
+ case mria:ro_transaction(?CLUSTER_RPC_SHARD, Fun) of
|
|
|
+ {atomic, Res} -> {ok, Res};
|
|
|
+ {aborted, Reason} -> {error, #{node => Node, msg => Reason}}
|
|
|
+ end
|
|
|
+ end;
|
|
|
+ true when Role =:= replicant ->
|
|
|
+ {ignore, #{node => Node}}
|
|
|
end.
|