From acfcf538a556cde4b7cb457d3b35f517f5a7383d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Tue, 14 Nov 2023 09:39:13 +0100 Subject: [PATCH] Only log if not credentials are found Today we log all failed providers, even if one suceeds later. This is verbose and can often be confusing. This PR makes it so we only log in case of failures. --- src/aws_credentials.erl | 19 +++++++++++-------- src/aws_credentials_provider.erl | 6 +----- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/aws_credentials.erl b/src/aws_credentials.erl index e39ffd2..fed5096 100644 --- a/src/aws_credentials.erl +++ b/src/aws_credentials.erl @@ -185,17 +185,17 @@ fetch_credentials(Options) -> {ok, Credentials, ExpirationTime} -> Tref = setup_update_callback(ExpirationTime), {ok, Credentials, Tref}; - {error, 'no_credentials'} when ShouldCatch -> + {error, 'no_credentials'} -> ?LOG_INFO("No credentials available~n", [], #{domain => [aws_credentials]}), - {ok, undefined, setup_callback(?RETRY_DELAY)}; - {error, ErrorLog} when is_list(ErrorLog) andalso ShouldCatch -> - ?LOG_INFO("No credentials available~n", - [], - #{domain => [aws_credentials]}), - [?LOG_ERROR(String, Args, Metadata) || {String, Args, Metadata} <- ErrorLog], - {ok, undefined, setup_callback(?RETRY_DELAY)} + {ok, undefined_or_fail(ShouldCatch), setup_callback(?RETRY_DELAY)}; + {error, ErrorLog} when is_list(ErrorLog) -> + Metadata = #{domain => [aws_credentials]}, + ?LOG_INFO("No credentials available~n", [], Metadata), + [?LOG_ERROR("Provider ~p reports ~p", [Provider, Error], Metadata) + || {Provider, Error} <- ErrorLog], + {ok, undefined_or_fail(ShouldCatch), setup_callback(?RETRY_DELAY)} catch E:R:ST when ShouldCatch -> ?LOG_INFO("aws_credentials ignoring exception ~p:~p (~p)~n", [E, R, ST], @@ -203,6 +203,9 @@ fetch_credentials(Options) -> {ok, undefined, setup_callback(?RETRY_DELAY)} end. +undefined_or_fail(true) -> true; +undefined_or_fail(false) -> error(no_credentials). + -spec setup_update_callback('infinity' | binary() | integer()) -> reference(). setup_update_callback(infinity) -> ok; setup_update_callback(Expires) when is_binary(Expires) -> diff --git a/src/aws_credentials_provider.erl b/src/aws_credentials_provider.erl index d9afc59..97f6c92 100644 --- a/src/aws_credentials_provider.erl +++ b/src/aws_credentials_provider.erl @@ -75,11 +75,7 @@ evaluate_providers([], _Options, Errors) when is_list(Errors) -> evaluate_providers([ Provider | Providers ], Options, Errors) -> case Provider:fetch(Options) of {error, _} = Error -> - String = "Provider ~p reports ~p", - Args = [Provider, Error], - Metadata = #{domain => [aws_credentials]}, - aws_credentials:log_error(String, Args, Metadata), - evaluate_providers(Providers, Options, [{String, Args, Metadata} | Errors]); + evaluate_providers(Providers, Options, [{Provider, Error} | Errors]); {ok, Credentials, Expiration} -> {ok, Credentials, Expiration} end.