From 2956e849eb4eac34897ef0f96a63cd81131a0e62 Mon Sep 17 00:00:00 2001 From: Kjell Winblad Date: Wed, 5 Jun 2024 16:58:14 +0200 Subject: [PATCH] fix(pgsql connector): better msg when failing to remove statement --- apps/emqx_postgresql/src/emqx_postgresql.erl | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/apps/emqx_postgresql/src/emqx_postgresql.erl b/apps/emqx_postgresql/src/emqx_postgresql.erl index ea83b951e..e0add780c 100644 --- a/apps/emqx_postgresql/src/emqx_postgresql.erl +++ b/apps/emqx_postgresql/src/emqx_postgresql.erl @@ -654,8 +654,8 @@ prepare_sql_to_conn(Conn, Prepares) -> prepare_sql_to_conn(Conn, [], Statements, _Attempts) when is_pid(Conn) -> {ok, Statements}; -prepare_sql_to_conn(Conn, [{Key, _} | _Rest], _Statements, _MaxAttempts = 3) when is_pid(Conn) -> - {error, {failed_to_remove_prev_prepared_statement, Key}}; +prepare_sql_to_conn(Conn, [{Key, _} | _Rest], _Statements, _MaxAttempts = 2) when is_pid(Conn) -> + failed_to_remove_prev_prepared_statement_error(); prepare_sql_to_conn( Conn, [{Key, {SQL, _RowTemplate}} | Rest] = ToPrepare, Statements, Attempts ) when is_pid(Conn) -> @@ -692,11 +692,12 @@ prepare_sql_to_conn( ?SLOG(warning, LogMsg), case epgsql:close(Conn, statement, Key) of ok -> - ?SLOG(info, #{msg => "pqsql_closed_statement_successfully"}); + ?SLOG(info, #{msg => "pqsql_closed_statement_successfully"}), + prepare_sql_to_conn(Conn, ToPrepare, Statements, Attempts + 1); {error, CloseError} -> - ?SLOG(warning, #{msg => "pqsql_close_statement_failed", cause => CloseError}) - end, - prepare_sql_to_conn(Conn, ToPrepare, Statements, Attempts + 1); + ?SLOG(error, #{msg => "pqsql_close_statement_failed", cause => CloseError}), + failed_to_remove_prev_prepared_statement_error() + end; {error, Error} -> TranslatedError = translate_to_log_context(Error), LogMsg = @@ -708,6 +709,13 @@ prepare_sql_to_conn( {error, export_error(TranslatedError)} end. +failed_to_remove_prev_prepared_statement_error() -> + Msg = + ("A previous prepared statement for the action already exists and " + "we are not able to close it. Please, try to disable and then enable " + "the connector to resolve this issue."), + {error, unicode:charactes_to_binary(Msg)}. + to_bin(Bin) when is_binary(Bin) -> Bin; to_bin(Atom) when is_atom(Atom) ->