From 4623b73f478c0f436178f4111cb8e6d60dd00e5a Mon Sep 17 00:00:00 2001 From: JimMoen Date: Fri, 1 Mar 2024 17:29:31 +0800 Subject: [PATCH] fix: sqlserver connector auto reconnect --- .../src/emqx_bridge_sqlserver.erl | 18 ++++-------------- .../test/emqx_bridge_sqlserver_SUITE.erl | 11 +++++++++-- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/apps/emqx_bridge_sqlserver/src/emqx_bridge_sqlserver.erl b/apps/emqx_bridge_sqlserver/src/emqx_bridge_sqlserver.erl index c7c3a4416..850f97487 100644 --- a/apps/emqx_bridge_sqlserver/src/emqx_bridge_sqlserver.erl +++ b/apps/emqx_bridge_sqlserver/src/emqx_bridge_sqlserver.erl @@ -142,20 +142,10 @@ fields(Field) when fields("config_connector") -- emqx_connector_schema:common_fields() ); fields("config_connector") -> - Config = - driver_fields() ++ - emqx_connector_schema:common_fields() ++ - emqx_bridge_sqlserver_connector:fields(config) ++ - emqx_connector_schema:resource_opts_ref(?MODULE, connector_resource_opts), - lists:foldl( - fun(Key, Acc) -> - proplists:delete(Key, Acc) - end, - Config, - [ - auto_reconnect - ] - ); + driver_fields() ++ + emqx_connector_schema:common_fields() ++ + emqx_bridge_sqlserver_connector:fields(config) ++ + emqx_connector_schema:resource_opts_ref(?MODULE, connector_resource_opts); fields(connector_resource_opts) -> emqx_connector_schema:resource_opts_fields(); fields("config") -> diff --git a/apps/emqx_bridge_sqlserver/test/emqx_bridge_sqlserver_SUITE.erl b/apps/emqx_bridge_sqlserver/test/emqx_bridge_sqlserver_SUITE.erl index 4bd67fc00..4d292254c 100644 --- a/apps/emqx_bridge_sqlserver/test/emqx_bridge_sqlserver_SUITE.erl +++ b/apps/emqx_bridge_sqlserver/test/emqx_bridge_sqlserver_SUITE.erl @@ -550,8 +550,15 @@ resource_id(Config) -> health_check_resource_ok(Config) -> BridgeType = ?config(sqlserver_bridge_type, Config), Name = ?config(sqlserver_name, Config), - ?assertEqual({ok, connected}, emqx_resource_manager:health_check(resource_id(Config))), - ?assertMatch(#{status := connected}, emqx_bridge_v2:health_check(BridgeType, Name)). + % Wait for reconnection. + ?retry( + _Sleep = 1_000, + _Attempts = 10, + begin + ?assertEqual({ok, connected}, emqx_resource_manager:health_check(resource_id(Config))), + ?assertMatch(#{status := connected}, emqx_bridge_v2:health_check(BridgeType, Name)) + end + ). health_check_resource_down(Config) -> case emqx_resource_manager:health_check(resource_id(Config)) of