diff --git a/apps/emqx_connector/src/emqx_connector_mysql.erl b/apps/emqx_connector/src/emqx_connector_mysql.erl index 7df2a7901..6fbbe11c6 100644 --- a/apps/emqx_connector/src/emqx_connector_mysql.erl +++ b/apps/emqx_connector/src/emqx_connector_mysql.erl @@ -52,7 +52,6 @@ on_jsonify(#{<<"server">> := Server, <<"user">> := User, <<"database">> := DB, }. %% =================================================================== - on_start(InstId, #{<<"server">> := {Host, Port}, <<"database">> := DB, <<"user">> := User, 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 4de432ca8..1a27351eb 100644 --- a/apps/emqx_data_bridge/src/emqx_data_bridge_api.erl +++ b/apps/emqx_data_bridge/src/emqx_data_bridge_api.erl @@ -37,7 +37,7 @@ }). -rest_api(#{ name => update_data_bridge - , method => 'POST' + , method => 'PUT' , path => "/data_bridges/:bin:name" , func => update_bridge , descr => "Update an existing data bridge" diff --git a/apps/emqx_data_bridge/src/emqx_data_bridge_config_handler.erl b/apps/emqx_data_bridge/src/emqx_data_bridge_config_handler.erl index 387f2b153..ed21b4ce3 100644 --- a/apps/emqx_data_bridge/src/emqx_data_bridge_config_handler.erl +++ b/apps/emqx_data_bridge/src/emqx_data_bridge_config_handler.erl @@ -35,6 +35,7 @@ start_link() -> gen_server:start_link({local, ?MODULE}, ?MODULE, [], []). +%% TODO: trigger the `updated` message from emqx_resource. notify_updated() -> gen_server:cast(?MODULE, updated). @@ -45,6 +46,7 @@ handle_call(_Request, _From, State) -> Reply = ok, {reply, Reply, State}. +%% TODO: change the config handler as a behavoir that calls back the Mod:format_config/1 handle_cast(updated, State) -> Configs = [format_conf(Data) || Data <- emqx_data_bridge:list_bridges()], emqx_config_handler ! {emqx_data_bridge, Configs}, diff --git a/apps/emqx_data_bridge/src/emqx_data_bridge_monitor.erl b/apps/emqx_data_bridge/src/emqx_data_bridge_monitor.erl index f3b6e6736..521d9721c 100644 --- a/apps/emqx_data_bridge/src/emqx_data_bridge_monitor.erl +++ b/apps/emqx_data_bridge/src/emqx_data_bridge_monitor.erl @@ -67,6 +67,8 @@ code_change(_OldVsn, State, _Extra) -> load_bridges(Configs) -> lists:foreach(fun load_bridge/1, Configs). +%% TODO: move this monitor into emqx_resource +%% emqx_resource:check_and_create_local(ResourceId, ResourceType, Config, #{keep_retry => true}). load_bridge(#{<<"name">> := Name, <<"type">> := Type, <<"config">> := Config}) -> case emqx_resource:check_and_create_local( diff --git a/apps/emqx_resource/src/emqx_resource.erl b/apps/emqx_resource/src/emqx_resource.erl index 53533c758..5a9b21408 100644 --- a/apps/emqx_resource/src/emqx_resource.erl +++ b/apps/emqx_resource/src/emqx_resource.erl @@ -255,13 +255,9 @@ call_stop(InstId, Mod, ResourceState) -> -spec call_config_merge(module(), resource_config(), resource_config(), term()) -> resource_config(). call_config_merge(Mod, OldConfig, NewConfig, Params) -> - case erlang:function_exported(Mod, on_jsonify, 1) of - true -> - ?SAFE_CALL(Mod:on_config_merge(OldConfig, NewConfig, Params)); - false when is_map(OldConfig), is_map(NewConfig) -> - maps:merge(OldConfig, NewConfig); - false -> - NewConfig + case erlang:function_exported(Mod, on_config_merge, 3) of + true -> ?SAFE_CALL(Mod:on_config_merge(OldConfig, NewConfig, Params)); + false -> NewConfig end. -spec call_jsonify(module(), resource_config()) -> jsx:json_term().