newrelic-python-agent icon indicating copy to clipboard operation
newrelic-python-agent copied to clipboard

Got 'DatabaseTrace' object has no attribute 'sql_format' error

Open slyapustin opened this issue 3 years ago • 2 comments
trafficstars

Got 'DatabaseTrace' object has no attribute 'sql_format' error

I'm using 7.10.0.175 with PostgreSQL

newrelic/api/database_trace.py in create_node at line 231

            start_time=self.start_time,
            end_time=self.end_time,
            duration=self.duration,
            exclusive=self.exclusive,
            stack_trace=self.stack_trace,
            sql_format=self.sql_format,
            connect_params=self.connect_params,
            cursor_params=self.cursor_params,
            sql_parameters=self.sql_parameters,
            execute_params=self.execute_params,
            host=self.host,

slyapustin avatar Apr 29 '22 18:04 slyapustin

I'm seeing the same issue since the upgrade to 7.12.0.176 (didn't see it with 7.10.0.175):

Traceback (most recent call last):
  File "/usr/src/venv/lib/python3.9/site-packages/asgiref/sync.py", line 472, in thread_handler
    raise exc_info[1]
  File "/usr/src/venv/lib/python3.9/site-packages/django/core/handlers/exception.py", line 38, in inner
    response = await get_response(request)
  File "/usr/src/venv/lib/python3.9/site-packages/django/core/handlers/base.py", line 233, in _get_response_async
    response = await wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/src/venv/lib/python3.9/site-packages/asgiref/sync.py", line 435, in __call__
    ret = await asyncio.wait_for(future, timeout=None)
  File "/usr/local/lib/python3.9/asyncio/tasks.py", line 442, in wait_for
    return await fut
  File "/usr/src/venv/lib/python3.9/site-packages/asgiref/current_thread_executor.py", line 22, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/hooks/adapter_asgiref.py", line 27, in thread_handler_wrapper
    return wrapped(*args, **kwargs)
  File "/usr/src/venv/lib/python3.9/site-packages/asgiref/sync.py", line 476, in thread_handler
    return func(*args, **kwargs)
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/hooks/framework_django.py", line 552, in wrapper
    return wrapped(*args, **kwargs)
  File "/usr/src/venv/lib/python3.9/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "/usr/src/venv/lib/python3.9/site-packages/rest_framework/viewsets.py", line 125, in view
    return self.dispatch(request, *args, **kwargs)
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/hooks/component_djangorestframework.py", line 61, in _nr_wrapper_APIView_dispatch_
    return wrapped(*args, **kwargs)
  File "/usr/src/venv/lib/python3.9/site-packages/rest_framework/views.py", line 509, in dispatch
    response = self.handle_exception(exc)
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/hooks/component_djangorestframework.py", line 68, in _handle_exception_wrapper
    return wrapped(*args, **kwargs)
  File "/usr/src/venv/lib/python3.9/site-packages/rest_framework/views.py", line 469, in handle_exception
    self.raise_uncaught_exception(exc)
  File "/usr/src/venv/lib/python3.9/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
    raise exc
  File "/usr/src/venv/lib/python3.9/site-packages/rest_framework/views.py", line 506, in dispatch
    response = handler(request, *args, **kwargs)
  File "/usr/src/app/apps/views/api.py", line 955, in get_packet
    "value": DataSerializer(myoptions, many=True).data,
  File "/usr/src/venv/lib/python3.9/site-packages/rest_framework/serializers.py", line 768, in data
    ret = super().data
  File "/usr/src/venv/lib/python3.9/site-packages/rest_framework/serializers.py", line 253, in data
    self._data = self.to_representation(self.instance)
  File "/usr/src/venv/lib/python3.9/site-packages/rest_framework/serializers.py", line 686, in to_representation
    return [
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/models/query.py", line 280, in __iter__
    self._fetch_all()
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/models/query.py", line 1324, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/models/query.py", line 51, in __iter__
    results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1175, in execute_sql
    cursor.execute(sql, params)
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/backends/utils.py", line 66, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/backends/utils.py", line 75, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/hooks/database_psycopg2.py", line 64, in execute
    return super(CursorWrapper, self).execute(sql, parameters, *args,
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/hooks/database_dbapi2.py", line 37, in execute
    return self.__wrapped__.execute(sql, parameters,
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/api/time_trace.py", line 186, in __exit__
    self._complete_trace()
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/api/time_trace.py", line 494, in _complete_trace
    node = self.create_node()
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/api/database_trace.py", line 231, in create_node
    sql_format=self.sql_format,
AttributeError: 'DatabaseTrace' object has no attribute 'sql_format'

daveisfera avatar Jun 15 '22 12:06 daveisfera

We received also such issue yesterday. newrelic==7.14.0.177

AttributeError: 'DatabaseTrace' object has no attribute 'sql_format'
  File "asgiref/sync.py", line 472, in thread_handler
    raise exc_info[1]
  File "django/core/handlers/exception.py", line 38, in inner
    response = await get_response(request)
  File "django/core/handlers/base.py", line 233, in _get_response_async
    response = await wrapped_callback(request, *callback_args, **callback_kwargs)
  File "asgiref/sync.py", line 435, in __call__
    ret = await asyncio.wait_for(future, timeout=None)
  File "asyncio/tasks.py", line 455, in wait_for
    return await fut
  File "asgiref/current_thread_executor.py", line 22, in run
    result = self.fn(*self.args, **self.kwargs)
  File "newrelic/hooks/adapter_asgiref.py", line 27, in thread_handler_wrapper
    return wrapped(*args, **kwargs)
  File "asgiref/sync.py", line 476, in thread_handler
    return func(*args, **kwargs)
  File "newrelic/hooks/framework_django.py", line 552, in wrapper
    return wrapped(*args, **kwargs)
  File "django/contrib/auth/decorators.py", line 21, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "django/views/generic/base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "newrelic/hooks/framework_django.py", line 946, in wrapper
    return wrapped(*args, **kwargs)
  File "django/views/generic/base.py", line 98, in dispatch
    return handler(request, *args, **kwargs)
  File "leadtool/views/lead_views.py", line 423, in post
    self.object: Lead = self.get_object()
  File "django/views/generic/detail.py", line 52, in get_object
    obj = queryset.get()
  File "django/db/models/query.py", line 431, in get
    num = len(clone)
  File "django/db/models/query.py", line 262, in __len__
    self._fetch_all()
  File "django/db/models/query.py", line 1324, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "django/db/models/query.py", line 69, in __iter__
    obj = model_cls.from_db(db, init_list, row[model_fields_start:model_fields_end])
  File "django/db/models/base.py", line 515, in from_db
    new = cls(*values)
  File "leadtool/models/leads.py", line 255, in __init__
    self.__original_quote_request_status = self.get_quote_request_status()
  File "leadtool/models/leads.py", line 545, in get_quote_request_status
    self.supplier_opportunities.filter(status=SupplierOpportunity.StatusChoices.ASSIGNED).count()
  File "django/db/models/query.py", line 412, in count
    return self.query.get_count(using=self.db)
  File "django/db/models/sql/query.py", line 528, in get_count
    number = obj.get_aggregation(using, ['__count'])['__count']
  File "django/db/models/sql/query.py", line 513, in get_aggregation
    result = compiler.execute_sql(SINGLE)
  File "django/db/models/sql/compiler.py", line 1175, in execute_sql
    cursor.execute(sql, params)
  File "django/db/backends/utils.py", line 66, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "django/db/backends/utils.py", line 75, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "newrelic/hooks/database_psycopg2.py", line 64, in execute
    return super(CursorWrapper, self).execute(sql, parameters, *args,
  File "newrelic/hooks/database_dbapi2.py", line 37, in execute
    return self.__wrapped__.execute(sql, parameters,
  File "newrelic/api/time_trace.py", line 186, in __exit__
    self._complete_trace()
  File "newrelic/api/time_trace.py", line 494, in _complete_trace
    node = self.create_node()
  File "newrelic/api/database_trace.py", line 231, in create_node
    sql_format=self.sql_format,

DmytroLitvinov avatar Jul 09 '22 17:07 DmytroLitvinov

Still seeing this after the upgrade to 8.0.0.179:

Traceback (most recent call last):
  File "/usr/src/venv/lib/python3.9/site-packages/asgiref/sync.py", line 472, in thread_handler
    raise exc_info[1]
  File "/usr/src/venv/lib/python3.9/site-packages/django/core/handlers/exception.py", line 38, in inner
    response = await get_response(request)
  File "/usr/src/venv/lib/python3.9/site-packages/django/core/handlers/base.py", line 233, in _get_response_async
    response = await wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/usr/src/venv/lib/python3.9/site-packages/asgiref/sync.py", line 435, in __call__
    ret = await asyncio.wait_for(future, timeout=None)
  File "/usr/local/lib/python3.9/asyncio/tasks.py", line 442, in wait_for
    return await fut
  File "/usr/src/venv/lib/python3.9/site-packages/asgiref/current_thread_executor.py", line 22, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/hooks/adapter_asgiref.py", line 27, in thread_handler_wrapper
    return wrapped(*args, **kwargs)
  File "/usr/src/venv/lib/python3.9/site-packages/asgiref/sync.py", line 476, in thread_handler
    return func(*args, **kwargs)
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/hooks/framework_django.py", line 552, in wrapper
    return wrapped(*args, **kwargs)
  File "/usr/src/app/apps/news/decorators.py", line 101, in _check
    return Ts(request, *args, **kwargs)
  File "/usr/src/app/apps/news/views/tournament_views.py", line 142, in tournament_player_scoreboard
    player_tournaments = tournament.player_scoreboard_package()
  File "/usr/src/app/apps/archive/models/tournament_models.py", line 424, in player_scoreboard_package
    pt.rounds.append(pt_rounds.get(round__round=rnd_numb))
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/models/query.py", line 431, in get
    num = len(clone)
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/models/query.py", line 262, in __len__
    self._fetch_all()
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/models/query.py", line 1324, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/models/query.py", line 51, in __iter__
    results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1175, in execute_sql
    cursor.execute(sql, params)
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/backends/utils.py", line 66, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/backends/utils.py", line 75, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/hooks/database_psycopg2.py", line 64, in execute
    return super(CursorWrapper, self).execute(sql, parameters, *args,
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/hooks/database_dbapi2.py", line 37, in execute
    return self.__wrapped__.execute(sql, parameters,
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/api/time_trace.py", line 186, in __exit__
    self._complete_trace()
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/api/time_trace.py", line 494, in _complete_trace
    node = self.create_node()
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/api/database_trace.py", line 231, in create_node
    sql_format=self.sql_format,
AttributeError: 'DatabaseTrace' object has no attribute 'sql_format'

daveisfera avatar Aug 24 '22 16:08 daveisfera

A fix for this issue was released two days ago, so this fix should be available in the next release (or it can be run directly from the main branch prior to the release)

lrafeei avatar Sep 01 '22 21:09 lrafeei

Thanks for fixing this! Is there an ETA for a release that will include this fix?

daveisfera avatar Sep 07 '22 15:09 daveisfera

This is still happening with 8.1.0.180. Here's the traceback:

Traceback (most recent call last):
  File "/usr/src/venv/lib/python3.9/site-packages/asgiref/sync.py", line 472, in thread_handler
    raise exc_info[1]
  File "/usr/src/venv/lib/python3.9/site-packages/django/core/handlers/exception.py", line 38, in inner
    response = await get_response(request)
  File "/usr/src/venv/lib/python3.9/site-packages/django/utils/deprecation.py", line 129, in __acall__
    response = await sync_to_async(
  File "/usr/src/venv/lib/python3.9/site-packages/asgiref/sync.py", line 435, in __call__
    ret = await asyncio.wait_for(future, timeout=None)
  File "/usr/local/lib/python3.9/asyncio/tasks.py", line 442, in wait_for
    return await fut
  File "/usr/src/venv/lib/python3.9/site-packages/asgiref/current_thread_executor.py", line 22, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/hooks/adapter_asgiref.py", line 27, in thread_handler_wrapper
    return wrapped(*args, **kwargs)
  File "/usr/src/venv/lib/python3.9/site-packages/asgiref/sync.py", line 476, in thread_handler
    return func(*args, **kwargs)
  File "/usr/src/app/apps/account/middleware.py", line 27, in process_request
    account = Account.objects.get(user=request.user)
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/models/query.py", line 431, in get
    num = len(clone)
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/models/query.py", line 262, in __len__
    self._fetch_all()
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/models/query.py", line 1324, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/models/query.py", line 51, in __iter__
    results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/models/sql/compiler.py", line 1175, in execute_sql
    cursor.execute(sql, params)
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/backends/utils.py", line 66, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/backends/utils.py", line 75, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "/usr/src/venv/lib/python3.9/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/hooks/database_psycopg2.py", line 64, in execute
    return super(CursorWrapper, self).execute(sql, parameters, *args,
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/hooks/database_dbapi2.py", line 37, in execute
    return self.__wrapped__.execute(sql, parameters,
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/api/time_trace.py", line 186, in __exit__
    self._complete_trace()
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/api/time_trace.py", line 494, in _complete_trace
    node = self.create_node()
  File "/usr/src/venv/lib/python3.9/site-packages/newrelic/api/database_trace.py", line 232, in create_node
    sql_format=self.sql_format,
AttributeError: 'DatabaseTrace' object has no attribute 'sql_format'

daveisfera avatar Sep 13 '22 14:09 daveisfera