diff --git a/ddtrace/contrib/celery/signals.py b/ddtrace/contrib/celery/signals.py index e16f5ecace..467d0244e9 100644 --- a/ddtrace/contrib/celery/signals.py +++ b/ddtrace/contrib/celery/signals.py @@ -199,7 +199,12 @@ def trace_failure(*args, **kwargs): if isinstance(original_exception, task.throws): return - span.set_exc_info(ex.type, ex.exception, ex.tb) + # ensure we are getting the actual exception class which stores the exception message + exc = ex.exception + if hasattr(exc, "exc"): + exc = exc.exc + + span.set_exc_info(ex.type, exc, ex.tb) def trace_retry(*args, **kwargs): diff --git a/releasenotes/notes/fix-celery-error-messages-to-not-include-traceback-98259864e85be54f.yaml b/releasenotes/notes/fix-celery-error-messages-to-not-include-traceback-98259864e85be54f.yaml new file mode 100644 index 0000000000..1161918ace --- /dev/null +++ b/releasenotes/notes/fix-celery-error-messages-to-not-include-traceback-98259864e85be54f.yaml @@ -0,0 +1,4 @@ +--- +fixes: + - | + celery: changes ``error.message`` span tag to no longer include the traceback that is already included in the ``error.stack`` span tag. diff --git a/tests/contrib/celery/test_integration.py b/tests/contrib/celery/test_integration.py index 8210ad634c..267789d325 100644 --- a/tests/contrib/celery/test_integration.py +++ b/tests/contrib/celery/test_integration.py @@ -280,7 +280,7 @@ def fn_exception(): assert span.error == 1 assert span.get_tag("component") == "celery" assert span.get_tag("span.kind") == "consumer" - assert "Task class is failing" in span.get_tag(ERROR_MSG) + assert span.get_tag(ERROR_MSG) == "Task class is failing" assert "Traceback (most recent call last)" in span.get_tag("error.stack") assert "Task class is failing" in span.get_tag("error.stack") @@ -403,7 +403,7 @@ def run(self): assert span.get_tag("celery.state") == "FAILURE" assert span.error == 1 assert span.get_tag("component") == "celery" - assert "Task class is failing" in span.get_tag(ERROR_MSG) + assert span.get_tag(ERROR_MSG) == "Task class is failing" assert "Traceback (most recent call last)" in span.get_tag("error.stack") assert "Task class is failing" in span.get_tag("error.stack") assert span.get_tag("span.kind") == "consumer"