From de5f31650e21b340cbac9499152f6ff8db3a14fa Mon Sep 17 00:00:00 2001 From: Shoham Peller Date: Thu, 22 Nov 2018 17:02:44 +0200 Subject: [PATCH] In case of an error, always add message The Jaeger driver counts on this message to be in the error description. It fails if the message is not present Closes-Bug: 1804218 Change-Id: I08f8328700049d9a0d791b12375fe9a6e8a3948a --- osprofiler/profiler.py | 6 +++++- osprofiler/sqlalchemy.py | 1 + osprofiler/tests/unit/test_profiler.py | 2 +- osprofiler/tests/unit/test_sqlalchemy.py | 1 + 4 files changed, 8 insertions(+), 2 deletions(-) diff --git a/osprofiler/profiler.py b/osprofiler/profiler.py index 1290f51..3748c16 100644 --- a/osprofiler/profiler.py +++ b/osprofiler/profiler.py @@ -17,6 +17,7 @@ import collections import datetime import functools import inspect +import six import socket import threading @@ -158,7 +159,10 @@ def trace(name, info=None, hide_args=False, hide_result=True, start(name, info=info_) result = f(*args, **kwargs) except Exception as ex: - stop_info = {"etype": reflection.get_class_name(ex)} + stop_info = { + "etype": reflection.get_class_name(ex), + "message": six.text_type(ex) + } raise else: if not hide_result: diff --git a/osprofiler/sqlalchemy.py b/osprofiler/sqlalchemy.py index 2118adc..5e2fc3c 100644 --- a/osprofiler/sqlalchemy.py +++ b/osprofiler/sqlalchemy.py @@ -105,6 +105,7 @@ def handle_error(exception_context): info = { "etype": exception_class_name, + "message": original_exception, "db": { "original_exception": original_exception, "chained_exception": chained_exception diff --git a/osprofiler/tests/unit/test_profiler.py b/osprofiler/tests/unit/test_profiler.py index 00dcd0f..fbe0ccd 100644 --- a/osprofiler/tests/unit/test_profiler.py +++ b/osprofiler/tests/unit/test_profiler.py @@ -260,7 +260,7 @@ class TraceDecoratorTestCase(test.TestCase): "name": "osprofiler.tests.unit.test_profiler.test_fn_exc" } } - expected_stop_info = {"etype": "ValueError"} + expected_stop_info = {"etype": "ValueError", "message": ""} mock_start.assert_called_once_with("foo", info=expected_info) mock_stop.assert_called_once_with(info=expected_stop_info) diff --git a/osprofiler/tests/unit/test_sqlalchemy.py b/osprofiler/tests/unit/test_sqlalchemy.py index 0b20aa5..3ccf6bf 100644 --- a/osprofiler/tests/unit/test_sqlalchemy.py +++ b/osprofiler/tests/unit/test_sqlalchemy.py @@ -62,6 +62,7 @@ class SqlalchemyTracingTestCase(test.TestCase): sqlalchemy.handle_error(sqlalchemy_exception_ctx) expected_info = { "etype": "Exception", + "message": "error", "db": { "original_exception": str(original_exception), "chained_exception": str(chained_exception),