Actions
Issue #9515
closedcontent app doesn't survive PostgreSQL disconnect in pulpcore 3.14.7
Status:
CLOSED - CURRENTRELEASE
Priority:
Urgent
Assignee:
Category:
-
Sprint/Milestone:
Start date:
Due date:
Estimated time:
Severity:
2. Medium
Version:
Platform Release:
OS:
Triaged:
Yes
Groomed:
No
Sprint Candidate:
No
Tags:
Katello
Sprint:
Sprint 109
Quarter:
Description
Ohai,
on pulpcore 3.14 (I didn't try newer yet), when the DB connection between pulpcore-content and PostgreSQL dies (e.g. because PostgreSQL was restarted), the content app seems not to notice this, and serves 500 errors:
pulpcore-content[659]: pulp [None]: asyncio:ERROR: Task exception was never retrieved pulpcore-content[659]: future: exception=OperationalError('terminating connection due to administrator command\nserver closed the connection unexpectedly\n\tThis probably means the server terminated abnormally\n\tbefore or while processing the request.\n',)> pulpcore-content[659]: Traceback (most recent call last): pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute pulpcore-content[659]: return self.cursor.execute(sql, params) pulpcore-content[659]: psycopg2.errors.AdminShutdown: terminating connection due to administrator command pulpcore-content[659]: server closed the connection unexpectedly pulpcore-content[659]: This probably means the server terminated abnormally pulpcore-content[659]: before or while processing the request. pulpcore-content[659]: The above exception was the direct cause of the following exception: pulpcore-content[659]: Traceback (most recent call last): pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/pulpcore/content/__init__.py", line 45, in _heartbeat pulpcore-content[659]: content_app_status, created = await loop.run_in_executor(None, get_status_blocking) pulpcore-content[659]: File "/usr/lib64/python3.6/concurrent/futures/thread.py", line 56, in run pulpcore-content[659]: result = self.fn(*self.args, **self.kwargs) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/pulpcore/content/__init__.py", line 42, in get_status_blocking pulpcore-content[659]: return ContentAppStatus.objects.get_or_create(name=name) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/manager.py", line 82, in manager_method pulpcore-content[659]: return getattr(self.get_queryset(), name)(*args, **kwargs) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 538, in get_or_create pulpcore-content[659]: return self.get(**kwargs), False pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 402, in get pulpcore-content[659]: num = len(clone) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 256, in __len__ pulpcore-content[659]: self._fetch_all() pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 1242, in _fetch_all pulpcore-content[659]: self._result_cache = list(self._iterable_class(self)) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 55, in __iter__ pulpcore-content[659]: results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1142, in execute_sql pulpcore-content[659]: cursor.execute(sql, params) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 67, in execute pulpcore-content[659]: return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers pulpcore-content[659]: return executor(sql, params, many, context) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute pulpcore-content[659]: return self.cursor.execute(sql, params) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__ pulpcore-content[659]: raise dj_exc_value.with_traceback(traceback) from exc_value pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute pulpcore-content[659]: return self.cursor.execute(sql, params) pulpcore-content[659]: django.db.utils.OperationalError: terminating connection due to administrator command pulpcore-content[659]: server closed the connection unexpectedly pulpcore-content[659]: This probably means the server terminated abnormally pulpcore-content[659]: before or while processing the request. pulpcore-content[659]: pulp [None]: asyncio:ERROR: Task exception was never retrieved pulpcore-content[659]: future: exception=OperationalError('terminating connection due to administrator command\nserver closed the connection unexpectedly\n\tThis probably means the server terminated abnormally\n\tbefore or while processing the request.\n',)> pulpcore-content[659]: Traceback (most recent call last): pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute pulpcore-content[659]: return self.cursor.execute(sql, params) pulpcore-content[659]: psycopg2.errors.AdminShutdown: terminating connection due to administrator command pulpcore-content[659]: server closed the connection unexpectedly pulpcore-content[659]: This probably means the server terminated abnormally pulpcore-content[659]: before or while processing the request. pulpcore-content[659]: The above exception was the direct cause of the following exception: pulpcore-content[659]: Traceback (most recent call last): pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/pulpcore/content/__init__.py", line 45, in _heartbeat pulpcore-content[659]: content_app_status, created = await loop.run_in_executor(None, get_status_blocking) pulpcore-content[659]: File "/usr/lib64/python3.6/concurrent/futures/thread.py", line 56, in run pulpcore-content[659]: result = self.fn(*self.args, **self.kwargs) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/pulpcore/content/__init__.py", line 42, in get_status_blocking pulpcore-content[659]: return ContentAppStatus.objects.get_or_create(name=name) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/manager.py", line 82, in manager_method pulpcore-content[659]: return getattr(self.get_queryset(), name)(*args, **kwargs) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 538, in get_or_create pulpcore-content[659]: return self.get(**kwargs), False pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 402, in get pulpcore-content[659]: num = len(clone) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 256, in __len__ pulpcore-content[659]: self._fetch_all() pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 1242, in _fetch_all pulpcore-content[659]: self._result_cache = list(self._iterable_class(self)) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 55, in __iter__ pulpcore-content[659]: results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1142, in execute_sql pulpcore-content[659]: cursor.execute(sql, params) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 67, in execute pulpcore-content[659]: return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers pulpcore-content[659]: return executor(sql, params, many, context) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute pulpcore-content[659]: return self.cursor.execute(sql, params) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__ pulpcore-content[659]: raise dj_exc_value.with_traceback(traceback) from exc_value pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute pulpcore-content[659]: return self.cursor.execute(sql, params) pulpcore-content[659]: django.db.utils.OperationalError: terminating connection due to administrator command pulpcore-content[659]: server closed the connection unexpectedly pulpcore-content[659]: This probably means the server terminated abnormally pulpcore-content[659]: before or while processing the request. pulpcore-content[659]: pulp [None]: asyncio:ERROR: Task exception was never retrieved pulpcore-content[659]: future: exception=OperationalError('terminating connection due to administrator command\nserver closed the connection unexpectedly\n\tThis probably means the server terminated abnormally\n\tbefore or while processing the request.\n',)> pulpcore-content[659]: Traceback (most recent call last): pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute pulpcore-content[659]: return self.cursor.execute(sql, params) pulpcore-content[659]: psycopg2.errors.AdminShutdown: terminating connection due to administrator command pulpcore-content[659]: server closed the connection unexpectedly pulpcore-content[659]: This probably means the server terminated abnormally pulpcore-content[659]: before or while processing the request. pulpcore-content[659]: The above exception was the direct cause of the following exception: pulpcore-content[659]: Traceback (most recent call last): pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/pulpcore/content/__init__.py", line 45, in _heartbeat pulpcore-content[659]: content_app_status, created = await loop.run_in_executor(None, get_status_blocking) pulpcore-content[659]: File "/usr/lib64/python3.6/concurrent/futures/thread.py", line 56, in run pulpcore-content[659]: result = self.fn(*self.args, **self.kwargs) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/pulpcore/content/__init__.py", line 42, in get_status_blocking pulpcore-content[659]: return ContentAppStatus.objects.get_or_create(name=name) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/manager.py", line 82, in manager_method pulpcore-content[659]: return getattr(self.get_queryset(), name)(*args, **kwargs) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 538, in get_or_create pulpcore-content[659]: return self.get(**kwargs), False pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 402, in get pulpcore-content[659]: num = len(clone) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 256, in __len__ pulpcore-content[659]: self._fetch_all() pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 1242, in _fetch_all pulpcore-content[659]: self._result_cache = list(self._iterable_class(self)) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 55, in __iter__ pulpcore-content[659]: results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1142, in execute_sql pulpcore-content[659]: cursor.execute(sql, params) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 67, in execute pulpcore-content[659]: return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers pulpcore-content[659]: return executor(sql, params, many, context) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute pulpcore-content[659]: return self.cursor.execute(sql, params) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__ pulpcore-content[659]: raise dj_exc_value.with_traceback(traceback) from exc_value pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute pulpcore-content[659]: return self.cursor.execute(sql, params) pulpcore-content[659]: django.db.utils.OperationalError: terminating connection due to administrator command pulpcore-content[659]: server closed the connection unexpectedly pulpcore-content[659]: This probably means the server terminated abnormally pulpcore-content[659]: before or while processing the request. pulpcore-content[659]: pulp [None]: asyncio:ERROR: Task exception was never retrieved pulpcore-content[659]: future: exception=OperationalError('terminating connection due to administrator command\nserver closed the connection unexpectedly\n\tThis probably means the server terminated abnormally\n\tbefore or while processing the request.\n',)> pulpcore-content[659]: Traceback (most recent call last): pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute pulpcore-content[659]: return self.cursor.execute(sql, params) pulpcore-content[659]: psycopg2.errors.AdminShutdown: terminating connection due to administrator command pulpcore-content[659]: server closed the connection unexpectedly pulpcore-content[659]: This probably means the server terminated abnormally pulpcore-content[659]: before or while processing the request. pulpcore-content[659]: The above exception was the direct cause of the following exception: pulpcore-content[659]: Traceback (most recent call last): pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/pulpcore/content/__init__.py", line 45, in _heartbeat pulpcore-content[659]: content_app_status, created = await loop.run_in_executor(None, get_status_blocking) pulpcore-content[659]: File "/usr/lib64/python3.6/concurrent/futures/thread.py", line 56, in run pulpcore-content[659]: result = self.fn(*self.args, **self.kwargs) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/pulpcore/content/__init__.py", line 42, in get_status_blocking pulpcore-content[659]: return ContentAppStatus.objects.get_or_create(name=name) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/manager.py", line 82, in manager_method pulpcore-content[659]: return getattr(self.get_queryset(), name)(*args, **kwargs) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 538, in get_or_create pulpcore-content[659]: return self.get(**kwargs), False pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 402, in get pulpcore-content[659]: num = len(clone) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 256, in __len__ pulpcore-content[659]: self._fetch_all() pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 1242, in _fetch_all pulpcore-content[659]: self._result_cache = list(self._iterable_class(self)) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 55, in __iter__ pulpcore-content[659]: results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1142, in execute_sql pulpcore-content[659]: cursor.execute(sql, params) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 67, in execute pulpcore-content[659]: return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers pulpcore-content[659]: return executor(sql, params, many, context) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute pulpcore-content[659]: return self.cursor.execute(sql, params) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__ pulpcore-content[659]: raise dj_exc_value.with_traceback(traceback) from exc_value pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute pulpcore-content[659]: return self.cursor.execute(sql, params) pulpcore-content[659]: django.db.utils.OperationalError: terminating connection due to administrator command pulpcore-content[659]: server closed the connection unexpectedly pulpcore-content[659]: This probably means the server terminated abnormally pulpcore-content[659]: before or while processing the request. pulpcore-content[659]: pulp [None]: asyncio:ERROR: Task exception was never retrieved pulpcore-content[659]: future: exception=OperationalError('terminating connection due to administrator command\nserver closed the connection unexpectedly\n\tThis probably means the server terminated abnormally\n\tbefore or while processing the request.\n',)> pulpcore-content[659]: Traceback (most recent call last): pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute pulpcore-content[659]: return self.cursor.execute(sql, params) pulpcore-content[659]: psycopg2.errors.AdminShutdown: terminating connection due to administrator command pulpcore-content[659]: server closed the connection unexpectedly pulpcore-content[659]: This probably means the server terminated abnormally pulpcore-content[659]: before or while processing the request. pulpcore-content[659]: The above exception was the direct cause of the following exception: pulpcore-content[659]: Traceback (most recent call last): pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/pulpcore/content/__init__.py", line 45, in _heartbeat pulpcore-content[659]: content_app_status, created = await loop.run_in_executor(None, get_status_blocking) pulpcore-content[659]: File "/usr/lib64/python3.6/concurrent/futures/thread.py", line 56, in run pulpcore-content[659]: result = self.fn(*self.args, **self.kwargs) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/pulpcore/content/__init__.py", line 42, in get_status_blocking pulpcore-content[659]: return ContentAppStatus.objects.get_or_create(name=name) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/manager.py", line 82, in manager_method pulpcore-content[659]: return getattr(self.get_queryset(), name)(*args, **kwargs) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 538, in get_or_create pulpcore-content[659]: return self.get(**kwargs), False pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 402, in get pulpcore-content[659]: num = len(clone) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 256, in __len__ pulpcore-content[659]: self._fetch_all() pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 1242, in _fetch_all pulpcore-content[659]: self._result_cache = list(self._iterable_class(self)) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 55, in __iter__ pulpcore-content[659]: results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1142, in execute_sql pulpcore-content[659]: cursor.execute(sql, params) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 67, in execute pulpcore-content[659]: return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers pulpcore-content[659]: return executor(sql, params, many, context) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute pulpcore-content[659]: return self.cursor.execute(sql, params) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__ pulpcore-content[659]: raise dj_exc_value.with_traceback(traceback) from exc_value pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute pulpcore-content[659]: return self.cursor.execute(sql, params) pulpcore-content[659]: django.db.utils.OperationalError: terminating connection due to administrator command pulpcore-content[659]: server closed the connection unexpectedly pulpcore-content[659]: This probably means the server terminated abnormally pulpcore-content[659]: before or while processing the request. pulpcore-content[659]: [2021-10-18 10:18:25 +0000] [1138] [ERROR] Error handling request pulpcore-content[659]: Traceback (most recent call last): pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute pulpcore-content[659]: return self.cursor.execute(sql, params) pulpcore-content[659]: psycopg2.errors.AdminShutdown: terminating connection due to administrator command pulpcore-content[659]: server closed the connection unexpectedly pulpcore-content[659]: This probably means the server terminated abnormally pulpcore-content[659]: before or while processing the request. pulpcore-content[659]: The above exception was the direct cause of the following exception: pulpcore-content[659]: Traceback (most recent call last): pulpcore-content[659]: File "/usr/lib64/python3.6/site-packages/aiohttp/web_protocol.py", line 422, in _handle_request pulpcore-content[659]: resp = await self._request_handler(request) pulpcore-content[659]: File "/usr/lib64/python3.6/site-packages/aiohttp/web_app.py", line 499, in _handle pulpcore-content[659]: resp = await handler(request) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/pulpcore/content/handler.py", line 142, in list_distributions pulpcore-content[659]: base_paths = await loop.run_in_executor(None, get_base_paths_blocking) pulpcore-content[659]: File "/usr/lib64/python3.6/concurrent/futures/thread.py", line 56, in run pulpcore-content[659]: result = self.fn(*self.args, **self.kwargs) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/pulpcore/content/handler.py", line 135, in get_base_paths_blocking pulpcore-content[659]: base_paths = list(Distribution.objects.values_list("base_path", flat=True)) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 274, in __iter__ pulpcore-content[659]: self._fetch_all() pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 1242, in _fetch_all pulpcore-content[659]: self._result_cache = list(self._iterable_class(self)) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/query.py", line 182, in __iter__ pulpcore-content[659]: for row in compiler.results_iter(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size): pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1094, in results_iter pulpcore-content[659]: results = self.execute_sql(MULTI, chunked_fetch=chunked_fetch, chunk_size=chunk_size) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/models/sql/compiler.py", line 1142, in execute_sql pulpcore-content[659]: cursor.execute(sql, params) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 67, in execute pulpcore-content[659]: return self._execute_with_wrappers(sql, params, many=False, executor=self._execute) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 76, in _execute_with_wrappers pulpcore-content[659]: return executor(sql, params, many, context) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute pulpcore-content[659]: return self.cursor.execute(sql, params) pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/utils.py", line 89, in __exit__ pulpcore-content[659]: raise dj_exc_value.with_traceback(traceback) from exc_value pulpcore-content[659]: File "/usr/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute pulpcore-content[659]: return self.cursor.execute(sql, params) pulpcore-content[659]: django.db.utils.OperationalError: terminating connection due to administrator command pulpcore-content[659]: server closed the connection unexpectedly pulpcore-content[659]: This probably means the server terminated abnormally pulpcore-content[659]: before or while processing the request. pulpcore-content[659]: [18/Oct/2021:10:18:25 +0000] "GET /pulp/content/ HTTP/1.1" 500 244 "-" "curl/7.29.0"
Related issues
Actions
Improves tolerance of db connection failures in pulpcore-content
This patch moves Handler._reset_db_connection() call to get_base_paths_blocking(). This ensures that the connection is reset inside the same thread that is used to perform ORM calls. This fixes a bug where the /pulp/content/ page would return a 500 error after the connection the database is closed due to a network problem or a database restart.
A call to Handler._reset_db_connection() has also been added to the _heartbeat() co-routine. This ensures that the heartbeat continues to be recorded in the database even if the db connection was closed.
fixes: #9515 https://pulp.plan.io/issues/9515