You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by as...@apache.org on 2021/06/22 13:45:54 UTC
[airflow] 04/38: Don't die when masking `log.exception` when there
is no exception (#16047)
This is an automated email from the ASF dual-hosted git repository.
ash pushed a commit to branch v2-1-test
in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 19332cf80b1016ac83536860adee3f7670e24062
Author: Ash Berlin-Taylor <as...@firemirror.com>
AuthorDate: Tue May 25 12:03:29 2021 +0100
Don't die when masking `log.exception` when there is no exception (#16047)
It is possible that `exc_info` can be set, but contain no exception.
We shouldn't fail in this case, even if the output doesn't make sense as
shown by the test (the `NoneType: None` line is the exception being
logged.)
(cherry picked from commit 2f776334e30ce9cc2c6a01b377703914acb7139e)
---
airflow/utils/log/secrets_masker.py | 2 +-
tests/utils/log/test_secrets_masker.py | 15 +++++++++++++++
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/airflow/utils/log/secrets_masker.py b/airflow/utils/log/secrets_masker.py
index 42e0e55..73a2aef 100644
--- a/airflow/utils/log/secrets_masker.py
+++ b/airflow/utils/log/secrets_masker.py
@@ -155,7 +155,7 @@ class SecretsMasker(logging.Filter):
if k in self._record_attrs_to_ignore:
continue
record.__dict__[k] = self.redact(v)
- if record.exc_info:
+ if record.exc_info and record.exc_info[1] is not None:
exc = record.exc_info[1]
# I'm not sure if this is a good idea!
exc.args = (self.redact(v) for v in exc.args)
diff --git a/tests/utils/log/test_secrets_masker.py b/tests/utils/log/test_secrets_masker.py
index ba88b87..1146bce 100644
--- a/tests/utils/log/test_secrets_masker.py
+++ b/tests/utils/log/test_secrets_masker.py
@@ -97,6 +97,21 @@ class TestSecretsMasker:
"""
)
+ def test_exception_not_raised(self, logger, caplog):
+ """
+ Test that when ``logger.exception`` is called when there is no current exception we still log.
+
+ (This is a "bug" in user code, but we shouldn't die because of it!)
+ """
+ logger.exception("Err")
+
+ assert caplog.text == textwrap.dedent(
+ """\
+ ERROR Err
+ NoneType: None
+ """
+ )
+
@pytest.mark.xfail(reason="Cannot filter secrets in traceback source")
def test_exc_tb(self, logger, caplog):
"""