diff --git a/apps/emqx/src/emqx_config_handler.erl b/apps/emqx/src/emqx_config_handler.erl index 664855be8..248847177 100644 --- a/apps/emqx/src/emqx_config_handler.erl +++ b/apps/emqx/src/emqx_config_handler.erl @@ -74,7 +74,10 @@ update_config(top, Config) -> emqx_config:put(Config), save_config_to_disk(Config); update_config(Handler, Config) -> - gen_server:cast(Handler, {handle_update_config, Config}). + case is_process_alive(whereis(Handler)) of + true -> gen_server:cast(Handler, {handle_update_config, Config}); + false -> error({not_alive, Handler}) + end. %%============================================================================ %% callbacks of emqx_config_handler (the top-level handler) diff --git a/apps/emqx_data_bridge/src/emqx_data_bridge_api.erl b/apps/emqx_data_bridge/src/emqx_data_bridge_api.erl index df07d7a5e..c0992fc46 100644 --- a/apps/emqx_data_bridge/src/emqx_data_bridge_api.erl +++ b/apps/emqx_data_bridge/src/emqx_data_bridge_api.erl @@ -76,7 +76,7 @@ create_bridge(#{name := Name}, Params) -> emqx_data_bridge:name_to_resource_id(Name), emqx_data_bridge:resource_type(BridgeType), Config) of {ok, Data} -> - emqx_config_handler:update_config(emqx_data_bridge, get_all_configs()), + update_config(), {200, #{code => 0, data => format_api_reply(emqx_resource_api:format_data(Data))}}; {error, already_created} -> {400, #{code => 102, message => <<"bridge already created: ", Name/binary>>}}; @@ -93,7 +93,7 @@ update_bridge(#{name := Name}, Params) -> emqx_data_bridge:name_to_resource_id(Name), emqx_data_bridge:resource_type(BridgeType), Config, []) of {ok, Data} -> - emqx_config_handler:update_config(emqx_data_bridge, get_all_configs()), + update_config(), {200, #{code => 0, data => format_api_reply(emqx_resource_api:format_data(Data))}}; {error, not_found} -> {400, #{code => 102, message => <<"bridge not_found: ", Name/binary>>}}; @@ -106,7 +106,7 @@ update_bridge(#{name := Name}, Params) -> delete_bridge(#{name := Name}, _Params) -> case emqx_resource:remove(emqx_data_bridge:name_to_resource_id(Name)) of ok -> - emqx_config_handler:update_config(emqx_data_bridge, get_all_configs()), + update_config(), {200, #{code => 0, data => #{}}}; {error, Reason} -> {500, #{code => 102, message => emqx_resource_api:stringnify(Reason)}} @@ -123,3 +123,6 @@ format_conf(#{resource_type := Type, id := Id, config := Conf}) -> get_all_configs() -> [format_conf(Data) || Data <- emqx_data_bridge:list_bridges()]. + +update_config() -> + emqx_config_handler:update_config(emqx_data_bridge_config_handler, get_all_configs()). diff --git a/apps/emqx_resource/examples/demo.md b/apps/emqx_resource/examples/demo.md index c8842578d..76b9dee19 100644 --- a/apps/emqx_resource/examples/demo.md +++ b/apps/emqx_resource/examples/demo.md @@ -105,7 +105,6 @@ To create a mysql data bridge: BridgeMySQL='{ "type": "mysql", "status": "started", - "name": "mysql-def", "config": { "verify": false, "user": "root", @@ -134,7 +133,6 @@ To update an existing data bridge: BridgeMySQL='{ "type": "mysql", "status": "started", - "name": "mysql-def", "config": { "verify": false, "user": "root",