when a connection error has occurred (like "MySQL server gone away" error), throw NotImplementedError.
it seems that caused by using MySQLDialect class directly instead of DB connector-specific implementation.
in case of using mysqlclient, it should use MySQLDialect_mysqldb in sqlalchemy.dialects.mysql.mysqldb module
Traceback
Traceback (most recent call last):
File "/app-libs/sqlalchemy/engine/default.py", line 715, in _do_ping_w_event
return self.do_ping(dbapi_connection)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app-libs/sqlalchemy/engine/default.py", line 741, in do_ping
cursor.execute(self._dialect_specific_select_one)
File "/app-libs/MySQLdb/cursors.py", line 179, in execute
res = self._query(mogrified_query)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app-libs/MySQLdb/cursors.py", line 330, in _query
db.query(q)
File "/app-libs/MySQLdb/connections.py", line 261, in query
_mysql.connection.query(self, query)
MySQLdb.OperationalError: (2006, 'MySQL server has gone away')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/app-libs/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
^^^^^^^^^^^^^^^^^^^^^
File "/app-libs/django/core/handlers/base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app-libs/sentry_sdk/integrations/django/views.py", line 84, in sentry_wrapped_callback
return callback(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app-libs/django/views/decorators/csrf.py", line 54, in wrapped_view
return view_func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app-libs/rest_framework/viewsets.py", line 124, in view
return self.dispatch(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app-libs/rest_framework/views.py", line 509, in dispatch
response = self.handle_exception(exc)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app-libs/rest_framework/views.py", line 469, in handle_exception
self.raise_uncaught_exception(exc)
File "/app-libs/rest_framework/views.py", line 480, in raise_uncaught_exception
raise exc
File "/app-libs/rest_framework/views.py", line 506, in dispatch
response = handler(request, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/apps_lite/user_with_topic_search/views/api.py", line 89, in search
http_status, response_data, es_took = search_lite_user(
^^^^^^^^^^^^^^^^^
File "/usr/src/app/apps_lite/user_with_topic_search/search/search.py", line 95, in search_lite_user
restricted_search_hits = filter_search_hits(search_hits, viewer)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/apps_lite/user_with_topic_search/search/response_hits_filter.py", line 34, in filter_search_hits
profiles = _fetch_profiles(hit_users, viewer)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/apps_lite/user_with_topic_search/search/response_hits_filter.py", line 80, in _fetch_profiles
return profile_class.bulk_disclose_to(users, viewer)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/app/apps/models/user_profile/profile_for/profile_for_authed_user.py", line 27, in bulk_disclose_to
privacy_option_map = {
^
File "/app-libs/django/db/models/query.py", line 280, in __iter__
self._fetch_all()
File "/app-libs/django/db/models/query.py", line 1324, in _fetch_all
self._result_cache = list(self._iterable_class(self))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app-libs/django/db/models/query.py", line 51, in __iter__
results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app-libs/django/db/models/sql/compiler.py", line 1173, in execute_sql
cursor = self.connection.cursor()
^^^^^^^^^^^^^^^^^^^^^^^^
File "/app-libs/django/utils/asyncio.py", line 33, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/app-libs/django/db/backends/base/base.py", line 259, in cursor
return self._cursor()
^^^^^^^^^^^^^^
File "/app-libs/django/db/backends/base/base.py", line 235, in _cursor
self.ensure_connection()
File "/app-libs/django/utils/asyncio.py", line 33, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/app-libs/django/db/backends/base/base.py", line 219, in ensure_connection
self.connect()
File "/app-libs/sentry_sdk/integrations/django/__init__.py", line 680, in connect
return real_connect(self)
^^^^^^^^^^^^^^^^^^
File "/app-libs/django/utils/asyncio.py", line 33, in inner
return func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^
File "/app-libs/django/db/backends/base/base.py", line 200, in connect
self.connection = self.get_new_connection(conn_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app-libs/dj_db_conn_pool/core/mixins/core.py", line 106, in get_new_connection
conn = db_pool.connect()
^^^^^^^^^^^^^^^^^
File "/app-libs/sqlalchemy/pool/base.py", line 449, in connect
return _ConnectionFairy._checkout(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app-libs/sqlalchemy/pool/base.py", line 1362, in _checkout
with util.safe_reraise():
File "/app-libs/sqlalchemy/util/langhelpers.py", line 146, in __exit__
raise exc_value.with_traceback(exc_tb)
File "/app-libs/sqlalchemy/pool/base.py", line 1300, in _checkout
result = pool._dialect._do_ping_w_event(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app-libs/sqlalchemy/engine/default.py", line 717, in _do_ping_w_event
is_disconnect = self.is_disconnect(err, dbapi_connection, None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app-libs/sqlalchemy/dialects/mysql/base.py", line 2679, in is_disconnect
) and self._extract_error_code(e) in (
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app-libs/sqlalchemy/dialects/mysql/base.py", line 2725, in _extract_error_code
raise NotImplementedError()
NotImplementedError
Describe the problem
NotImplementedError
.MySQLDialect
class directly instead of DB connector-specific implementation.MySQLDialect_mysqldb
insqlalchemy.dialects.mysql.mysqldb
moduleTraceback