diff --git a/scripts/runtox.sh b/scripts/runtox.sh index e099f44efe..31be9bfb4b 100755 --- a/scripts/runtox.sh +++ b/scripts/runtox.sh @@ -23,5 +23,5 @@ ENV="$($TOXPATH -l | grep "$searchstring" | tr $'\n' ',')" if [ "$ENV" = py2.7-common, ] || [ "$ENV" = py2.7-gevent, ]; then exec $TOXPATH -vv -e "$ENV" -- "${@:2}" else - exec $TOXPATH -vv -p auto -e "$ENV" -- "${@:2}" + exec $TOXPATH -vv -e "$ENV" -- "${@:2}" fi diff --git a/sentry_sdk/integrations/django/__init__.py b/sentry_sdk/integrations/django/__init__.py index 0e67ad1eae..033028e319 100644 --- a/sentry_sdk/integrations/django/__init__.py +++ b/sentry_sdk/integrations/django/__init__.py @@ -6,7 +6,7 @@ import weakref from importlib import import_module -from sentry_sdk._compat import string_types +from sentry_sdk._compat import string_types, text_type from sentry_sdk._types import TYPE_CHECKING from sentry_sdk.consts import OP, SPANDATA from sentry_sdk.hub import Hub, _should_send_default_pii @@ -612,7 +612,7 @@ def execute(self, sql, params=None): with record_sql_queries( hub, self.cursor, sql, params, paramstyle="format", executemany=False ) as span: - _set_db_data(span, self.db.vendor, self.db.get_connection_params()) + _set_db_data(span, self) return real_execute(self, sql, params) def executemany(self, sql, param_list): @@ -624,7 +624,7 @@ def executemany(self, sql, param_list): with record_sql_queries( hub, self.cursor, sql, param_list, paramstyle="format", executemany=True ) as span: - _set_db_data(span, self.db.vendor, self.db.get_connection_params()) + _set_db_data(span, self) return real_executemany(self, sql, param_list) def connect(self): @@ -637,7 +637,7 @@ def connect(self): hub.add_breadcrumb(message="connect", category="query") with hub.start_span(op=OP.DB, description="connect") as span: - _set_db_data(span, self.vendor, self.get_connection_params()) + _set_db_data(span, self) return real_connect(self) CursorWrapper.execute = execute @@ -646,10 +646,19 @@ def connect(self): ignore_logger("django.db.backends") -def _set_db_data(span, vendor, connection_params): - # type: (Span, str, Dict[str, str]) -> None +def _set_db_data(span, cursor_or_db): + # type: (Span, Any) -> None + + db = cursor_or_db.db if hasattr(cursor_or_db, "db") else cursor_or_db + vendor = db.vendor span.set_data(SPANDATA.DB_SYSTEM, vendor) + connection_params = ( + cursor_or_db.connection.get_dsn_parameters() + if hasattr(cursor_or_db, "connection") + and hasattr(cursor_or_db.connection, "get_dsn_parameters") + else db.get_connection_params() + ) db_name = connection_params.get("dbname") or connection_params.get("database") if db_name is not None: span.set_data(SPANDATA.DB_NAME, db_name) @@ -660,7 +669,7 @@ def _set_db_data(span, vendor, connection_params): server_port = connection_params.get("port") if server_port is not None: - span.set_data(SPANDATA.SERVER_PORT, server_port) + span.set_data(SPANDATA.SERVER_PORT, text_type(server_port)) server_socket_address = connection_params.get("unix_socket") if server_socket_address is not None: diff --git a/tests/integrations/django/test_basic.py b/tests/integrations/django/test_basic.py index 78cd16a027..379c4d9614 100644 --- a/tests/integrations/django/test_basic.py +++ b/tests/integrations/django/test_basic.py @@ -653,7 +653,7 @@ def test_db_connection_span_data(sentry_init, client, capture_events): assert data.get(SPANDATA.SERVER_ADDRESS) == os.environ.get( "SENTRY_PYTHON_TEST_POSTGRES_HOST", "localhost" ) - assert data.get(SPANDATA.SERVER_PORT) == 5432 + assert data.get(SPANDATA.SERVER_PORT) == "5432" @pytest.mark.parametrize(