This is an automated email from the ASF dual-hosted git repository. jedcunningham pushed a commit to branch v2-4-test in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 0308b177fc4911cd1a01af62e2b620ffeaf9ab64 Author: Tzu-ping Chung <[email protected]> AuthorDate: Thu Sep 22 15:20:47 2022 +0800 Log warning when secret backend kwargs is invalid (#26580) This should help debugging a bit. (cherry picked from commit 2060ed43955e09792cb9888deea0da239b7eee09) --- airflow/configuration.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/airflow/configuration.py b/airflow/configuration.py index 77164ab904..905564ac8d 100644 --- a/airflow/configuration.py +++ b/airflow/configuration.py @@ -1542,15 +1542,23 @@ def get_custom_secret_backend() -> BaseSecretsBackend | None: """Get Secret Backend if defined in airflow.cfg""" secrets_backend_cls = conf.getimport(section='secrets', key='backend') - if secrets_backend_cls: - try: - backends: Any = conf.get(section='secrets', key='backend_kwargs', fallback='{}') - alternative_secrets_config_dict = json.loads(backends) - except JSONDecodeError: - alternative_secrets_config_dict = {} + if not secrets_backend_cls: + return None - return secrets_backend_cls(**alternative_secrets_config_dict) - return None + try: + backend_kwargs = conf.getjson(section='secrets', key='backend_kwargs') + if not backend_kwargs: + backend_kwargs = {} + elif not isinstance(backend_kwargs, dict): + raise ValueError("not a dict") + except AirflowConfigException: + log.warning("Failed to parse [secrets] backend_kwargs as JSON, defaulting to no kwargs.") + backend_kwargs = {} + except ValueError: + log.warning("Failed to parse [secrets] backend_kwargs into a dict, defaulting to no kwargs.") + backend_kwargs = {} + + return secrets_backend_cls(**backend_kwargs) def initialize_secrets_backends() -> list[BaseSecretsBackend]:
