Merge pull request #10485 from JimMoen/fix-mssql-bridge-default

fix: use default health check timeout for sqlserver
This commit is contained in:
JianBo He 2023-04-23 18:20:10 +08:00 committed by GitHub
commit 2b0106e047
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 20 additions and 12 deletions

View File

@ -26,7 +26,7 @@
"values ( ${id}, ${topic}, ${qos}, ${payload} )" "values ( ${id}, ${topic}, ${qos}, ${payload} )"
>>). >>).
-define(DEFAULT_DRIVER, <<"ms-sqlserver-18">>). -define(DEFAULT_DRIVER, <<"ms-sql">>).
conn_bridge_examples(Method) -> conn_bridge_examples(Method) ->
[ [

View File

@ -43,7 +43,7 @@
-export([connect/1]). -export([connect/1]).
%% Internal exports used to execute code with ecpool worker %% Internal exports used to execute code with ecpool worker
-export([do_get_status/2, worker_do_insert/3, do_async_reply/2]). -export([do_get_status/1, worker_do_insert/3, do_async_reply/2]).
-import(emqx_plugin_libs_rule, [str/1]). -import(emqx_plugin_libs_rule, [str/1]).
-import(hoconsc, [mk/2, enum/1, ref/2]). -import(hoconsc, [mk/2, enum/1, ref/2]).
@ -306,10 +306,9 @@ on_batch_query_async(InstanceId, Requests, ReplyFunAndArgs, State) ->
), ),
do_query(InstanceId, Requests, ?ASYNC_QUERY_MODE(ReplyFunAndArgs), State). do_query(InstanceId, Requests, ?ASYNC_QUERY_MODE(ReplyFunAndArgs), State).
on_get_status(_InstanceId, #{poolname := Pool, resource_opts := ResourceOpts} = _State) -> on_get_status(_InstanceId, #{poolname := Pool} = _State) ->
RequestTimeout = ?REQUEST_TIMEOUT(ResourceOpts),
Health = emqx_plugin_libs_pool:health_check_ecpool_workers( Health = emqx_plugin_libs_pool:health_check_ecpool_workers(
Pool, {?MODULE, do_get_status, [RequestTimeout]}, RequestTimeout Pool, {?MODULE, do_get_status, []}
), ),
status_result(Health). status_result(Health).
@ -328,9 +327,9 @@ connect(Options) ->
Opts = proplists:get_value(options, Options, []), Opts = proplists:get_value(options, Options, []),
odbc:connect(ConnectStr, Opts). odbc:connect(ConnectStr, Opts).
-spec do_get_status(connection_reference(), time_out()) -> Result :: boolean(). -spec do_get_status(connection_reference()) -> Result :: boolean().
do_get_status(Conn, RequestTimeout) -> do_get_status(Conn) ->
case execute(Conn, <<"SELECT 1">>, RequestTimeout) of case execute(Conn, <<"SELECT 1">>) of
{selected, [[]], [{1}]} -> true; {selected, [[]], [{1}]} -> true;
_ -> false _ -> false
end. end.
@ -444,6 +443,15 @@ worker_do_insert(
{error, {unrecoverable_error, {invalid_request, Reason}}} {error, {unrecoverable_error, {invalid_request, Reason}}}
end. end.
-spec execute(pid(), sql()) ->
updated_tuple()
| selected_tuple()
| [updated_tuple()]
| [selected_tuple()]
| {error, common_reason()}.
execute(Conn, SQL) ->
odbc:sql_query(Conn, str(SQL)).
-spec execute(pid(), sql(), time_out()) -> -spec execute(pid(), sql(), time_out()) ->
updated_tuple() updated_tuple()
| selected_tuple() | selected_tuple()

View File

@ -193,9 +193,9 @@ for dep in ${CT_DEPS}; do
done done
if [ "$ODBC_REQUEST" = 'yes' ]; then if [ "$ODBC_REQUEST" = 'yes' ]; then
INSTALL_ODBC="./scripts/install-odbc-driver.sh" INSTALL_ODBC="./scripts/install-msodbc-driver.sh"
else else
INSTALL_ODBC="echo 'Driver msodbcsql driver not requested'" INSTALL_ODBC="echo 'msodbc driver not requested'"
fi fi
F_OPTIONS="" F_OPTIONS=""