Prechádzať zdrojové kódy

fix: sqlserver connector auto reconnect

JimMoen 1 rok pred
rodič
commit
4623b73f47

+ 4 - 14
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") ->

+ 9 - 2
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