Merge pull request #12102 from thalesmg/nit-postgres-log-m-20231205
chore(postgres): prettify logged errors
This commit is contained in:
commit
17b6143c30
|
@ -604,7 +604,11 @@ t_missing_data(Config) ->
|
||||||
#{
|
#{
|
||||||
result :=
|
result :=
|
||||||
{error,
|
{error,
|
||||||
{unrecoverable_error, {error, error, <<"23502">>, not_null_violation, _, _}}}
|
{unrecoverable_error, #{
|
||||||
|
error_code := <<"23502">>,
|
||||||
|
error_codename := not_null_violation,
|
||||||
|
severity := error
|
||||||
|
}}}
|
||||||
},
|
},
|
||||||
Event
|
Event
|
||||||
),
|
),
|
||||||
|
|
|
@ -383,11 +383,12 @@ get_prepared_statement(Key, #{prepares := PrepStatements}) ->
|
||||||
|
|
||||||
on_sql_query(InstId, PoolName, Type, NameOrSQL, Data) ->
|
on_sql_query(InstId, PoolName, Type, NameOrSQL, Data) ->
|
||||||
try ecpool:pick_and_do(PoolName, {?MODULE, Type, [NameOrSQL, Data]}, no_handover) of
|
try ecpool:pick_and_do(PoolName, {?MODULE, Type, [NameOrSQL, Data]}, no_handover) of
|
||||||
{error, Reason} = Result ->
|
{error, Reason} ->
|
||||||
?tp(
|
?tp(
|
||||||
pgsql_connector_query_return,
|
pgsql_connector_query_return,
|
||||||
#{error => Reason}
|
#{error => Reason}
|
||||||
),
|
),
|
||||||
|
TranslatedError = translate_to_log_context(Reason),
|
||||||
?SLOG(
|
?SLOG(
|
||||||
error,
|
error,
|
||||||
maps:merge(
|
maps:merge(
|
||||||
|
@ -397,7 +398,7 @@ on_sql_query(InstId, PoolName, Type, NameOrSQL, Data) ->
|
||||||
type => Type,
|
type => Type,
|
||||||
sql => NameOrSQL
|
sql => NameOrSQL
|
||||||
},
|
},
|
||||||
translate_to_log_context(Reason)
|
TranslatedError
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
case Reason of
|
case Reason of
|
||||||
|
@ -406,9 +407,9 @@ on_sql_query(InstId, PoolName, Type, NameOrSQL, Data) ->
|
||||||
ecpool_empty ->
|
ecpool_empty ->
|
||||||
{error, {recoverable_error, Reason}};
|
{error, {recoverable_error, Reason}};
|
||||||
{error, error, _, undefined_table, _, _} ->
|
{error, error, _, undefined_table, _, _} ->
|
||||||
{error, {unrecoverable_error, Reason}};
|
{error, {unrecoverable_error, export_error(TranslatedError)}};
|
||||||
_ ->
|
_ ->
|
||||||
Result
|
{error, export_error(TranslatedError)}
|
||||||
end;
|
end;
|
||||||
Result ->
|
Result ->
|
||||||
?tp(
|
?tp(
|
||||||
|
@ -593,15 +594,16 @@ init_prepare(State = #{}) ->
|
||||||
{ok, PrepStatements} ->
|
{ok, PrepStatements} ->
|
||||||
State#{prepares => PrepStatements};
|
State#{prepares => PrepStatements};
|
||||||
Error ->
|
Error ->
|
||||||
|
TranslatedError = translate_to_log_context(Error),
|
||||||
?SLOG(
|
?SLOG(
|
||||||
error,
|
error,
|
||||||
maps:merge(
|
maps:merge(
|
||||||
#{msg => <<"postgresql_init_prepare_statement_failed">>},
|
#{msg => <<"postgresql_init_prepare_statement_failed">>},
|
||||||
translate_to_log_context(Error)
|
TranslatedError
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
%% mark the prepares failed
|
%% mark the prepares failed
|
||||||
State#{prepares => Error}
|
State#{prepares => {error, export_error(TranslatedError)}}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
prepare_sql(#{query_templates := Templates, pool_name := PoolName}) ->
|
prepare_sql(#{query_templates := Templates, pool_name := PoolName}) ->
|
||||||
|
@ -652,14 +654,15 @@ prepare_sql_to_conn(Conn, [{Key, {SQL, _RowTemplate}} | Rest], Statements) when
|
||||||
),
|
),
|
||||||
?SLOG(error, LogMsg),
|
?SLOG(error, LogMsg),
|
||||||
{error, undefined_table};
|
{error, undefined_table};
|
||||||
{error, Error} = Other ->
|
{error, Error} ->
|
||||||
|
TranslatedError = translate_to_log_context(Error),
|
||||||
LogMsg =
|
LogMsg =
|
||||||
maps:merge(
|
maps:merge(
|
||||||
LogMeta#{msg => "postgresql_parse_failed"},
|
LogMeta#{msg => "postgresql_parse_failed"},
|
||||||
translate_to_log_context(Error)
|
TranslatedError
|
||||||
),
|
),
|
||||||
?SLOG(error, LogMsg),
|
?SLOG(error, LogMsg),
|
||||||
Other
|
{error, export_error(TranslatedError)}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
to_bin(Bin) when is_binary(Bin) ->
|
to_bin(Bin) when is_binary(Bin) ->
|
||||||
|
@ -674,17 +677,21 @@ handle_result({error, {unrecoverable_error, _Error}} = Res) ->
|
||||||
handle_result({error, disconnected}) ->
|
handle_result({error, disconnected}) ->
|
||||||
{error, {recoverable_error, disconnected}};
|
{error, {recoverable_error, disconnected}};
|
||||||
handle_result({error, Error}) ->
|
handle_result({error, Error}) ->
|
||||||
{error, {unrecoverable_error, Error}};
|
TranslatedError = translate_to_log_context(Error),
|
||||||
|
{error, {unrecoverable_error, export_error(TranslatedError)}};
|
||||||
handle_result(Res) ->
|
handle_result(Res) ->
|
||||||
Res.
|
Res.
|
||||||
|
|
||||||
handle_batch_result([{ok, Count} | Rest], Acc) ->
|
handle_batch_result([{ok, Count} | Rest], Acc) ->
|
||||||
handle_batch_result(Rest, Acc + Count);
|
handle_batch_result(Rest, Acc + Count);
|
||||||
handle_batch_result([{error, Error} | _Rest], _Acc) ->
|
handle_batch_result([{error, Error} | _Rest], _Acc) ->
|
||||||
{error, {unrecoverable_error, Error}};
|
TranslatedError = translate_to_log_context(Error),
|
||||||
|
{error, {unrecoverable_error, export_error(TranslatedError)}};
|
||||||
handle_batch_result([], Acc) ->
|
handle_batch_result([], Acc) ->
|
||||||
{ok, Acc}.
|
{ok, Acc}.
|
||||||
|
|
||||||
|
translate_to_log_context({error, Reason}) ->
|
||||||
|
translate_to_log_context(Reason);
|
||||||
translate_to_log_context(#error{} = Reason) ->
|
translate_to_log_context(#error{} = Reason) ->
|
||||||
#error{
|
#error{
|
||||||
severity = Severity,
|
severity = Severity,
|
||||||
|
@ -702,3 +709,19 @@ translate_to_log_context(#error{} = Reason) ->
|
||||||
};
|
};
|
||||||
translate_to_log_context(Reason) ->
|
translate_to_log_context(Reason) ->
|
||||||
#{reason => Reason}.
|
#{reason => Reason}.
|
||||||
|
|
||||||
|
export_error(#{
|
||||||
|
driver_severity := Severity,
|
||||||
|
driver_error_codename := Codename,
|
||||||
|
driver_error_code := Code
|
||||||
|
}) ->
|
||||||
|
%% Extra information has already been logged.
|
||||||
|
#{
|
||||||
|
error_code => Code,
|
||||||
|
error_codename => Codename,
|
||||||
|
severity => Severity
|
||||||
|
};
|
||||||
|
export_error(#{reason := Reason}) ->
|
||||||
|
Reason;
|
||||||
|
export_error(Error) ->
|
||||||
|
Error.
|
||||||
|
|
Loading…
Reference in New Issue