Deadlock detected

Are you using our SaaS platform (Baserow.io) or self-hosting Baserow?

Self-hosted

If you are self-hosting, what version of Baserow are you running?

Self hosting 1.30.1

What are the exact steps to reproduce this issue?

When it happens it seems the base is lock: I can’t add a delete row, webhook are not emitted, I can’t publish the app.

I don’t know exactly how to reproduce it, it seems to happen when a row or several rows are created.

Some context

  • I have a docker for baserow (8gb) and a separate cloud database hosted on OVH.
  • The BASEROW_AMOUNT_OF_GUNICORN_WORKERS environment variable is set to 9
  • Some tables have webhook for “all event”. These webhooks are linked to automations that run when rows are created or udated.

It’s verry problematic because baserow is almost unusable when it happend.

Does anyone have an idea about how to solve that ?

Thanks,

Here is the main error

[BACKEND][2025-03-11 08:35:49] ERROR 2025-03-11 08:35:49,095 django.request.log_response:241- Internal Server Error: /api/database/rows/table/38/   
 [BACKEND][2025-03-11 08:35:49] Traceback (most recent call last):  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 105, in _execute  
 [BACKEND][2025-03-11 08:35:49]     return self.cursor.execute(sql, params)  
 [BACKEND][2025-03-11 08:35:49]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49] psycopg2.errors.DeadlockDetected: deadlock detected  
 [BACKEND][2025-03-11 08:35:49] DETAIL:  Process 2539809 waits for ShareLock on transaction 34144581; blocked by process 2530919.  
 [BACKEND][2025-03-11 08:35:49] Process 2530919 waits for ShareLock on transaction 34144557; blocked by process 2539809.  
 [BACKEND][2025-03-11 08:35:49] HINT:  See server log for query details.  
 [BACKEND][2025-03-11 08:35:49] CONTEXT:  while updating tuple (697,2) in relation "database_table_38"  
 [BACKEND][2025-03-11 08:35:49]   
 [BACKEND][2025-03-11 08:35:49]   
 [BACKEND][2025-03-11 08:35:49] The above exception was the direct cause of the following exception:  
 [BACKEND][2025-03-11 08:35:49]   
 [BACKEND][2025-03-11 08:35:49] Traceback (most recent call last):  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/asgiref/sync.py", line 518, in thread_handler  
 [BACKEND][2025-03-11 08:35:49]     raise exc_info[1]  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/django/core/handlers/exception.py", line 42, in inner  
 [BACKEND][2025-03-11 08:35:49]     response = await get_response(request)  
 [BACKEND][2025-03-11 08:35:49]                ^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/asgiref/sync.py", line 518, in thread_handler  
 [BACKEND][2025-03-11 08:35:49]     raise exc_info[1]  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/django/core/handlers/base.py", line 253, in _get_response_async  
 [BACKEND][2025-03-11 08:35:49]     response = await wrapped_callback(  
 [BACKEND][2025-03-11 08:35:49]                ^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/asgiref/sync.py", line 468, in __call__  
 [BACKEND][2025-03-11 08:35:49]     ret = await asyncio.shield(exec_coro)  
 [BACKEND][2025-03-11 08:35:49]           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/asgiref/current_thread_executor.py", line 40, in run  
 [BACKEND][2025-03-11 08:35:49]     result = self.fn(*self.args, **self.kwargs)  
 [BACKEND][2025-03-11 08:35:49]              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/asgiref/sync.py", line 522, in thread_handler  
 [BACKEND][2025-03-11 08:35:49]     return func(*args, **kwargs)  
 [BACKEND][2025-03-11 08:35:49]            ^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper  
 [BACKEND][2025-03-11 08:35:49]     return view_func(request, *args, **kwargs)  
 [BACKEND][2025-03-11 08:35:49]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/django/views/generic/base.py", line 104, in view  
 [BACKEND][2025-03-11 08:35:49]     return self.dispatch(request, *args, **kwargs)  
 [BACKEND][2025-03-11 08:35:49]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/rest_framework/views.py", line 509, in dispatch  
 [BACKEND][2025-03-11 08:35:49]     response = self.handle_exception(exc)  
 [BACKEND][2025-03-11 08:35:49]                ^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/rest_framework/views.py", line 469, in handle_exception  
 [BACKEND][2025-03-11 08:35:49]     self.raise_uncaught_exception(exc)  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception  
 [BACKEND][2025-03-11 08:35:49]     raise exc  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/rest_framework/views.py", line 506, in dispatch  
 [BACKEND][2025-03-11 08:35:49]     response = handler(request, *args, **kwargs)  
 [BACKEND][2025-03-11 08:35:49]                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/usr/lib/python3.11/contextlib.py", line 81, in inner  
 [BACKEND][2025-03-11 08:35:49]     return func(*args, **kwds)  
 [BACKEND][2025-03-11 08:35:49]            ^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/backend/src/baserow/api/decorators.py", line 113, in func_wrapper  
 [BACKEND][2025-03-11 08:35:49]     return func(*args, **kwargs)  
 [BACKEND][2025-03-11 08:35:49]            ^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/backend/src/baserow/api/decorators.py", line 178, in func_wrapper  
 [BACKEND][2025-03-11 08:35:49]     return func(*args, **kwargs)  
 [BACKEND][2025-03-11 08:35:49]            ^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/backend/src/baserow/contrib/database/api/rows/views.py", line 545, in post  
 [BACKEND][2025-03-11 08:35:49]     row = action_type_registry.get_by_type(CreateRowActionType).do(  
 [BACKEND][2025-03-11 08:35:49]           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/backend/src/baserow/contrib/database/rows/actions.py", line 90, in do  
 [BACKEND][2025-03-11 08:35:49]     row = RowHandler().create_row(  
 [BACKEND][2025-03-11 08:35:49]           ^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/backend/src/baserow/core/telemetry/utils.py", line 72, in _wrapper  
 [BACKEND][2025-03-11 08:35:49]     raise ex  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/backend/src/baserow/core/telemetry/utils.py", line 68, in _wrapper  
 [BACKEND][2025-03-11 08:35:49]     result = wrapped_func(*args, **kwargs)  
 [BACKEND][2025-03-11 08:35:49]              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/backend/src/baserow/contrib/database/rows/handler.py", line 704, in create_row  
 [BACKEND][2025-03-11 08:35:49]     return self.force_create_row(  
 [BACKEND][2025-03-11 08:35:49]            ^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/backend/src/baserow/core/telemetry/utils.py", line 72, in _wrapper  
 [BACKEND][2025-03-11 08:35:49]     raise ex  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/backend/src/baserow/core/telemetry/utils.py", line 68, in _wrapper  
 [BACKEND][2025-03-11 08:35:49]     result = wrapped_func(*args, **kwargs)  
 [BACKEND][2025-03-11 08:35:49]              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/backend/src/baserow/contrib/database/rows/handler.py", line 794, in force_create_row  
 [BACKEND][2025-03-11 08:35:49]     fields, dependant_fields = self.update_dependencies_of_rows_created(  
 [BACKEND][2025-03-11 08:35:49]                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/backend/src/baserow/core/telemetry/utils.py", line 72, in _wrapper  
 [BACKEND][2025-03-11 08:35:49]     raise ex  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/backend/src/baserow/core/telemetry/utils.py", line 68, in _wrapper  
 [BACKEND][2025-03-11 08:35:49]     result = wrapped_func(*args, **kwargs)  
 [BACKEND][2025-03-11 08:35:49]              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/backend/src/baserow/contrib/database/rows/handler.py", line 1340, in update_dependencies_of_rows_created  
 [BACKEND][2025-03-11 08:35:49]     update_collector.apply_updates_and_get_updated_fields(field_cache)  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/backend/src/baserow/contrib/database/fields/dependencies/update_collector.py", line 415, in apply_updates_and_get_updated_fields  
 [BACKEND][2025-03-11 08:35:49]     updated_rows_count = self.apply_updates(field_cache)  
 [BACKEND][2025-03-11 08:35:49]                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/backend/src/baserow/contrib/database/fields/dependencies/update_collector.py", line 399, in apply_updates  
 [BACKEND][2025-03-11 08:35:49]     updated_rows_count = self._update_statement_collector.execute_all(  
 [BACKEND][2025-03-11 08:35:49]                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/backend/src/baserow/contrib/database/fields/dependencies/update_collector.py", line 147, in execute_all  
 [BACKEND][2025-03-11 08:35:49]     updated_rows += sub_path.execute_all(  
 [BACKEND][2025-03-11 08:35:49]                     ^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/backend/src/baserow/contrib/database/fields/dependencies/update_collector.py", line 147, in execute_all  
 [BACKEND][2025-03-11 08:35:49]     updated_rows += sub_path.execute_all(  
 [BACKEND][2025-03-11 08:35:49]                     ^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/backend/src/baserow/contrib/database/fields/dependencies/update_collector.py", line 139, in execute_all  
 [BACKEND][2025-03-11 08:35:49]     updated_rows += self._execute_pending_update_statements(  
 [BACKEND][2025-03-11 08:35:49]                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/backend/src/baserow/contrib/database/fields/dependencies/update_collector.py", line 217, in _execute_pending_update_statements  
 [BACKEND][2025-03-11 08:35:49]     qs.annotate(**annotations)  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/django/db/models/query.py", line 1253, in update  
 [BACKEND][2025-03-11 08:35:49]     rows = query.get_compiler(self.db).execute_sql(CURSOR)  
 [BACKEND][2025-03-11 08:35:49]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1990, in execute_sql  
 [BACKEND][2025-03-11 08:35:49]     cursor = super().execute_sql(result_type)  
 [BACKEND][2025-03-11 08:35:49]              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1562, in execute_sql  
 [BACKEND][2025-03-11 08:35:49]     cursor.execute(sql, params)  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute  
 [BACKEND][2025-03-11 08:35:49]     return self._execute_with_wrappers(  
 [BACKEND][2025-03-11 08:35:49]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers  
 [BACKEND][2025-03-11 08:35:49]     return executor(sql, params, many, context)  
 [BACKEND][2025-03-11 08:35:49]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 100, in _execute  
 [BACKEND][2025-03-11 08:35:49]     with self.db.wrap_database_errors:  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/django/db/utils.py", line 91, in __exit__  
 [BACKEND][2025-03-11 08:35:49]     raise dj_exc_value.with_traceback(traceback) from exc_value  
 [BACKEND][2025-03-11 08:35:49]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 105, in _execute  
 [BACKEND][2025-03-11 08:35:49]     return self.cursor.execute(sql, params)  
 [BACKEND][2025-03-11 08:35:49]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-11 08:35:49] django.db.utils.OperationalError: deadlock detected  
 [BACKEND][2025-03-11 08:35:49] DETAIL:  Process 2539809 waits for ShareLock on transaction 34144581; blocked by process 2530919.  
 [BACKEND][2025-03-11 08:35:49] Process 2530919 waits for ShareLock on transaction 34144557; blocked by process 2539809.  
 [BACKEND][2025-03-11 08:35:49] HINT:  See server log for query details.  
 [BACKEND][2025-03-11 08:35:49] CONTEXT:  while updating tuple (697,2) in relation "database_table_38"  
 [BACKEND][2025-03-11 08:35:49]   
 [BACKEND][2025-03-11 08:35:51] 34.96.44.77:0 - "POST /api/database/rows/table/38/?user_field_names=true HTTP/1.1" 500  
 [BACKEND][2025-03-11 08:35:54] 92.169.248.58:0 - "GET /api/jobs/542/ HTTP/1.1" 200  
 [BACKEND][2025-03-11 08:35:56] 92.169.248.58:0 - "GET /api/jobs/542/ HTTP/1.1" 200  

Hi @Alex-Clapp, could you please upgrade to version 1.31 and verify if the issue persists?

Hello Olga, Sure, I’ll do that and let you know if it persists

1 Like

Hello Olga,

I’ve updated baserow but the error is still there.

[EXPORT_WORKER][2025-03-17 08:21:02] DETAIL:  Process 940598 waits for ShareLock on transaction 34247748; blocked by process 940591.  
 [EXPORT_WORKER][2025-03-17 08:21:02] Process 940591 waits for ShareLock on transaction 34247749; blocked by process 940598.  
 [EXPORT_WORKER][2025-03-17 08:21:02] HINT:  See server log for query details.  
 [EXPORT_WORKER][2025-03-17 08:21:02] CONTEXT:  while updating tuple (210,2) in relation "database_table_38"  
 [BACKEND][2025-03-17 08:21:03] 143.110.174.228:0 - "PATCH /api/database/rows/table/38/3149/?user_field_names=true HTTP/1.1" 200  
 [BACKEND][2025-03-17 08:21:03] ERROR 2025-03-17 08:21:03,416 django.request.log_response:241- Internal Server Error: /api/database/rows/table/37/1229/   
 [BACKEND][2025-03-17 08:21:03] Traceback (most recent call last):  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 105, in _execute  
 [BACKEND][2025-03-17 08:21:03]     return self.cursor.execute(sql, params)  
 [BACKEND][2025-03-17 08:21:03]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03] psycopg2.errors.DeadlockDetected: deadlock detected  
 [BACKEND][2025-03-17 08:21:03] DETAIL:  Process 940591 waits for ShareLock on transaction 34247751; blocked by process 940598.  
 [BACKEND][2025-03-17 08:21:03] Process 940598 waits for ShareLock on transaction 34247748; blocked by process 940591.  
 [BACKEND][2025-03-17 08:21:03] HINT:  See server log for query details.  
 [BACKEND][2025-03-17 08:21:03] CONTEXT:  while updating tuple (65,7) in relation "database_table_38"  
 [BACKEND][2025-03-17 08:21:03]   
 [BACKEND][2025-03-17 08:21:03]   
 [BACKEND][2025-03-17 08:21:03] The above exception was the direct cause of the following exception:  
 [BACKEND][2025-03-17 08:21:03]   
 [BACKEND][2025-03-17 08:21:03] Traceback (most recent call last):  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/asgiref/sync.py", line 518, in thread_handler  
 [BACKEND][2025-03-17 08:21:03]     raise exc_info[1]  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/django/core/handlers/exception.py", line 42, in inner  
 [BACKEND][2025-03-17 08:21:03]     response = await get_response(request)  
 [BACKEND][2025-03-17 08:21:03]                ^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/asgiref/sync.py", line 518, in thread_handler  
 [BACKEND][2025-03-17 08:21:03]     raise exc_info[1]  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/django/core/handlers/base.py", line 253, in _get_response_async  
 [BACKEND][2025-03-17 08:21:03]     response = await wrapped_callback(  
 [BACKEND][2025-03-17 08:21:03]                ^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/asgiref/sync.py", line 468, in __call__  
 [BACKEND][2025-03-17 08:21:03]     ret = await asyncio.shield(exec_coro)  
 [BACKEND][2025-03-17 08:21:03]           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/asgiref/current_thread_executor.py", line 40, in run  
 [BACKEND][2025-03-17 08:21:03]     result = self.fn(*self.args, **self.kwargs)  
 [BACKEND][2025-03-17 08:21:03]              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/asgiref/sync.py", line 522, in thread_handler  
 [BACKEND][2025-03-17 08:21:03]     return func(*args, **kwargs)  
 [BACKEND][2025-03-17 08:21:03]            ^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper  
 [BACKEND][2025-03-17 08:21:03]     return view_func(request, *args, **kwargs)  
 [BACKEND][2025-03-17 08:21:03]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/django/views/generic/base.py", line 104, in view  
 [BACKEND][2025-03-17 08:21:03]     return self.dispatch(request, *args, **kwargs)  
 [BACKEND][2025-03-17 08:21:03]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/rest_framework/views.py", line 509, in dispatch  
 [BACKEND][2025-03-17 08:21:03]     response = self.handle_exception(exc)  
 [BACKEND][2025-03-17 08:21:03]                ^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/rest_framework/views.py", line 469, in handle_exception  
 [BACKEND][2025-03-17 08:21:03]     self.raise_uncaught_exception(exc)  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception  
 [BACKEND][2025-03-17 08:21:03]     raise exc  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/rest_framework/views.py", line 506, in dispatch  
 [BACKEND][2025-03-17 08:21:03]     response = handler(request, *args, **kwargs)  
 [BACKEND][2025-03-17 08:21:03]                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/usr/lib/python3.11/contextlib.py", line 81, in inner  
 [BACKEND][2025-03-17 08:21:03]     return func(*args, **kwds)  
 [BACKEND][2025-03-17 08:21:03]            ^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/api/decorators.py", line 113, in func_wrapper  
 [BACKEND][2025-03-17 08:21:03]     return func(*args, **kwargs)  
 [BACKEND][2025-03-17 08:21:03]            ^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/api/decorators.py", line 439, in _wrap  
 [BACKEND][2025-03-17 08:21:03]     return f(_self, request, *args, **kwargs)  
 [BACKEND][2025-03-17 08:21:03]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/contrib/database/api/rows/views.py", line 909, in patch  
 [BACKEND][2025-03-17 08:21:03]     row = action_type_registry.get_by_type(UpdateRowsActionType).do(  
 [BACKEND][2025-03-17 08:21:03]           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/contrib/database/rows/actions.py", line 813, in do  
 [BACKEND][2025-03-17 08:21:03]     result = row_handler.update_rows(  
 [BACKEND][2025-03-17 08:21:03]              ^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/core/telemetry/utils.py", line 73, in _wrapper  
 [BACKEND][2025-03-17 08:21:03]     raise ex  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/core/telemetry/utils.py", line 69, in _wrapper  
 [BACKEND][2025-03-17 08:21:03]     result = wrapped_func(*args, **kwargs)  
 [BACKEND][2025-03-17 08:21:03]              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/contrib/database/rows/handler.py", line 1969, in update_rows  
 [BACKEND][2025-03-17 08:21:03]     return self.force_update_rows(  
 [BACKEND][2025-03-17 08:21:03]            ^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/core/telemetry/utils.py", line 73, in _wrapper  
 [BACKEND][2025-03-17 08:21:03]     raise ex  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/core/telemetry/utils.py", line 69, in _wrapper  
 [BACKEND][2025-03-17 08:21:03]     result = wrapped_func(*args, **kwargs)  
 [BACKEND][2025-03-17 08:21:03]              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/contrib/database/rows/handler.py", line 1888, in force_update_rows  
 [BACKEND][2025-03-17 08:21:03]     dependant_fields = self.update_dependencies_of_rows_updated(  
 [BACKEND][2025-03-17 08:21:03]                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/core/telemetry/utils.py", line 73, in _wrapper  
 [BACKEND][2025-03-17 08:21:03]     raise ex  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/core/telemetry/utils.py", line 69, in _wrapper  
 [BACKEND][2025-03-17 08:21:03]     result = wrapped_func(*args, **kwargs)  
 [BACKEND][2025-03-17 08:21:03]              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/contrib/database/rows/handler.py", line 1071, in update_dependencies_of_rows_updated  
 [BACKEND][2025-03-17 08:21:03]     update_collector.apply_updates_and_get_updated_fields(  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/contrib/database/fields/dependencies/update_collector.py", line 447, in apply_updates_and_get_updated_fields  
 [BACKEND][2025-03-17 08:21:03]     updated_rows_count = self.apply_updates(field_cache)  
 [BACKEND][2025-03-17 08:21:03]                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/contrib/database/fields/dependencies/update_collector.py", line 410, in apply_updates  
 [BACKEND][2025-03-17 08:21:03]     updated_rows_count = self._update_statement_collector.execute_all(  
 [BACKEND][2025-03-17 08:21:03]                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/contrib/database/fields/dependencies/update_collector.py", line 147, in execute_all  
 [BACKEND][2025-03-17 08:21:03]     updated_rows += sub_path.execute_all(  
 [BACKEND][2025-03-17 08:21:03]                     ^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/contrib/database/fields/dependencies/update_collector.py", line 147, in execute_all  
 [BACKEND][2025-03-17 08:21:03]     updated_rows += sub_path.execute_all(  
 [BACKEND][2025-03-17 08:21:03]                     ^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/contrib/database/fields/dependencies/update_collector.py", line 147, in execute_all  
 [BACKEND][2025-03-17 08:21:03]     updated_rows += sub_path.execute_all(  
 [BACKEND][2025-03-17 08:21:03]                     ^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/contrib/database/fields/dependencies/update_collector.py", line 139, in execute_all  
 [BACKEND][2025-03-17 08:21:03]     updated_rows += self._execute_pending_update_statements(  
 [BACKEND][2025-03-17 08:21:03]                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/backend/src/baserow/contrib/database/fields/dependencies/update_collector.py", line 217, in _execute_pending_update_statements  
 [BACKEND][2025-03-17 08:21:03]     qs.annotate(**annotations)  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/django/db/models/query.py", line 1253, in update  
 [BACKEND][2025-03-17 08:21:03]     rows = query.get_compiler(self.db).execute_sql(CURSOR)  
 [BACKEND][2025-03-17 08:21:03]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1990, in execute_sql  
 [BACKEND][2025-03-17 08:21:03]     cursor = super().execute_sql(result_type)  
 [BACKEND][2025-03-17 08:21:03]              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1562, in execute_sql  
 [BACKEND][2025-03-17 08:21:03]     cursor.execute(sql, params)  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute  
 [BACKEND][2025-03-17 08:21:03]     return self._execute_with_wrappers(  
 [BACKEND][2025-03-17 08:21:03]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers  
 [BACKEND][2025-03-17 08:21:03]     return executor(sql, params, many, context)  
 [BACKEND][2025-03-17 08:21:03]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 100, in _execute  
 [BACKEND][2025-03-17 08:21:03]     with self.db.wrap_database_errors:  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/django/db/utils.py", line 91, in __exit__  
 [BACKEND][2025-03-17 08:21:03]     raise dj_exc_value.with_traceback(traceback) from exc_value  
 [BACKEND][2025-03-17 08:21:03]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 105, in _execute  
 [BACKEND][2025-03-17 08:21:03]     return self.cursor.execute(sql, params)  
 [BACKEND][2025-03-17 08:21:03]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2025-03-17 08:21:03] django.db.utils.OperationalError: deadlock detected  
 [BACKEND][2025-03-17 08:21:03] DETAIL:  Process 940591 waits for ShareLock on transaction 34247751; blocked by process 940598.  
 [BACKEND][2025-03-17 08:21:03] Process 940598 waits for ShareLock on transaction 34247748; blocked by process 940591.  
 [BACKEND][2025-03-17 08:21:03] HINT:  See server log for query details.  
 [BACKEND][2025-03-17 08:21:03] CONTEXT:  while updating tuple (65,7) in relation "database_table_38"  
 [BACKEND][2025-03-17 08:21:03]   
 [BACKEND][2025-03-17 08:21:07] 195.101.82.105:0 - "PATCH /api/database/rows/table/37/1229/ HTTP/1.1" 500  
 [EXPORT_WORKER][2025-03-17 08:21:12] . Attempting to do per field updates one by one instead...  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,571: WARNING/ForkPoolWorker-2] 27957|2025-03-17 08:21:12.570|ERROR|baserow.contrib.database.search.handler:try_slower_but_best_effort_tsv_update:690 - Failed to update search vector for field with id 652 / type <class 'baserow.contrib.database.fields.models.FormulaField'> because of deadlock detected  
 [EXPORT_WORKER][2025-03-17 08:21:12] DETAIL:  Process 940598 waits for ShareLock on transaction 34247827; blocked by process 940641.  
 [EXPORT_WORKER][2025-03-17 08:21:12] Process 940641 waits for ShareLock on transaction 34247832; blocked by process 940598.  
 [EXPORT_WORKER][2025-03-17 08:21:12] HINT:  See server log for query details.  
 [EXPORT_WORKER][2025-03-17 08:21:12] CONTEXT:  while updating tuple (3192,1) in relation "database_table_38"  
 [EXPORT_WORKER][2025-03-17 08:21:12] , field.__str__ is: FormulaField(  
 [EXPORT_WORKER][2025-03-17 08:21:12] formula=join(field('Article'),''),  
 [EXPORT_WORKER][2025-03-17 08:21:12] internal_formula=error_to_null(join(lookup('field_663','field_576'),'')),  
 [EXPORT_WORKER][2025-03-17 08:21:12] formula_type=text,  
 [EXPORT_WORKER][2025-03-17 08:21:12] error=None,  
 [EXPORT_WORKER][2025-03-17 08:21:12] ) and expression is LocalisedSearchVector(Func(Cast(F(field_652)), Value('[@:/+.]|-(?!\\d)|(?<=\\S)-(?=\\d)|\\b-\\b'), Value(' '), Value('g'), function=regexp_replace))  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,575: WARNING/ForkPoolWorker-2] Traceback (most recent call last):  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,576: WARNING/ForkPoolWorker-2]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 105, in _execute  
 [EXPORT_WORKER][2025-03-17 08:21:12]     return self.cursor.execute(sql, params)  
 [EXPORT_WORKER][2025-03-17 08:21:12]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,576: WARNING/ForkPoolWorker-2] psycopg2.errors.DeadlockDetected: deadlock detected  
 [EXPORT_WORKER][2025-03-17 08:21:12] DETAIL:  Process 940598 waits for ShareLock on transaction 34247748; blocked by process 940591.  
 [EXPORT_WORKER][2025-03-17 08:21:12] Process 940591 waits for ShareLock on transaction 34247749; blocked by process 940598.  
 [EXPORT_WORKER][2025-03-17 08:21:12] HINT:  See server log for query details.  
 [EXPORT_WORKER][2025-03-17 08:21:12] CONTEXT:  while updating tuple (210,2) in relation "database_table_38"  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,576: WARNING/ForkPoolWorker-2]   
 [EXPORT_WORKER][2025-03-17 08:21:12] The above exception was the direct cause of the following exception:  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,576: WARNING/ForkPoolWorker-2] Traceback (most recent call last):  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,577: WARNING/ForkPoolWorker-2]   File "/baserow/backend/src/baserow/contrib/database/search/handler.py", line 604, in run_tsvector_update_statement  
 [EXPORT_WORKER][2025-03-17 08:21:12]     return cls.split_update_into_chunks_until_all_background_done(  
 [EXPORT_WORKER][2025-03-17 08:21:12]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,577: WARNING/ForkPoolWorker-2]   File "/baserow/backend/src/baserow/contrib/database/search/handler.py", line 580, in split_update_into_chunks_until_all_background_done  
 [EXPORT_WORKER][2025-03-17 08:21:12]     this_chunk_updated = next_chunk.update(**update_query)  
 [EXPORT_WORKER][2025-03-17 08:21:12]                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,577: WARNING/ForkPoolWorker-2]   File "/baserow/venv/lib/python3.11/site-packages/django/db/models/query.py", line 1253, in update  
 [EXPORT_WORKER][2025-03-17 08:21:12]     rows = query.get_compiler(self.db).execute_sql(CURSOR)  
 [EXPORT_WORKER][2025-03-17 08:21:12]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,577: WARNING/ForkPoolWorker-2]   File "/baserow/venv/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1990, in execute_sql  
 [EXPORT_WORKER][2025-03-17 08:21:12]     cursor = super().execute_sql(result_type)  
 [EXPORT_WORKER][2025-03-17 08:21:12]              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,577: WARNING/ForkPoolWorker-2]   File "/baserow/venv/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1562, in execute_sql  
 [EXPORT_WORKER][2025-03-17 08:21:12]     cursor.execute(sql, params)  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,578: WARNING/ForkPoolWorker-2]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute  
 [EXPORT_WORKER][2025-03-17 08:21:12]     return self._execute_with_wrappers(  
 [EXPORT_WORKER][2025-03-17 08:21:12]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,578: WARNING/ForkPoolWorker-2]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers  
 [EXPORT_WORKER][2025-03-17 08:21:12]     return executor(sql, params, many, context)  
 [EXPORT_WORKER][2025-03-17 08:21:12]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,578: WARNING/ForkPoolWorker-2]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 100, in _execute  
 [EXPORT_WORKER][2025-03-17 08:21:12]     with self.db.wrap_database_errors:  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,578: WARNING/ForkPoolWorker-2]   File "/baserow/venv/lib/python3.11/site-packages/django/db/utils.py", line 91, in __exit__  
 [EXPORT_WORKER][2025-03-17 08:21:12]     raise dj_exc_value.with_traceback(traceback) from exc_value  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,578: WARNING/ForkPoolWorker-2]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 105, in _execute  
 [EXPORT_WORKER][2025-03-17 08:21:12]     return self.cursor.execute(sql, params)  
 [EXPORT_WORKER][2025-03-17 08:21:12]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,579: WARNING/ForkPoolWorker-2] django.db.utils.OperationalError: deadlock detected  
 [EXPORT_WORKER][2025-03-17 08:21:12] DETAIL:  Process 940598 waits for ShareLock on transaction 34247748; blocked by process 940591.  
 [EXPORT_WORKER][2025-03-17 08:21:12] Process 940591 waits for ShareLock on transaction 34247749; blocked by process 940598.  
 [EXPORT_WORKER][2025-03-17 08:21:12] HINT:  See server log for query details.  
 [EXPORT_WORKER][2025-03-17 08:21:12] CONTEXT:  while updating tuple (210,2) in relation "database_table_38"  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,579: WARNING/ForkPoolWorker-2]   
 [EXPORT_WORKER][2025-03-17 08:21:12] During handling of the above exception, another exception occurred:  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,579: WARNING/ForkPoolWorker-2] Traceback (most recent call last):  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,579: WARNING/ForkPoolWorker-2]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 105, in _execute  
 [EXPORT_WORKER][2025-03-17 08:21:12]     return self.cursor.execute(sql, params)  
 [EXPORT_WORKER][2025-03-17 08:21:12]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,580: WARNING/ForkPoolWorker-2] psycopg2.errors.DeadlockDetected: deadlock detected  
 [EXPORT_WORKER][2025-03-17 08:21:12] DETAIL:  Process 940598 waits for ShareLock on transaction 34247827; blocked by process 940641.  
 [EXPORT_WORKER][2025-03-17 08:21:12] Process 940641 waits for ShareLock on transaction 34247832; blocked by process 940598.  
 [EXPORT_WORKER][2025-03-17 08:21:12] HINT:  See server log for query details.  
 [EXPORT_WORKER][2025-03-17 08:21:12] CONTEXT:  while updating tuple (3192,1) in relation "database_table_38"  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,580: WARNING/ForkPoolWorker-2]   
 [EXPORT_WORKER][2025-03-17 08:21:12] The above exception was the direct cause of the following exception:  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,580: WARNING/ForkPoolWorker-2] Traceback (most recent call last):  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,581: WARNING/ForkPoolWorker-2]   File "/baserow/backend/src/baserow/contrib/database/search/handler.py", line 672, in try_slower_but_best_effort_tsv_update  
 [EXPORT_WORKER][2025-03-17 08:21:12]     cls.split_update_into_chunks_until_all_background_done(  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,581: WARNING/ForkPoolWorker-2]   File "/baserow/backend/src/baserow/contrib/database/search/handler.py", line 580, in split_update_into_chunks_until_all_background_done  
 [EXPORT_WORKER][2025-03-17 08:21:12]     this_chunk_updated = next_chunk.update(**update_query)  
 [EXPORT_WORKER][2025-03-17 08:21:12]                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,582: WARNING/ForkPoolWorker-2]   File "/baserow/venv/lib/python3.11/site-packages/django/db/models/query.py", line 1253, in update  
 [EXPORT_WORKER][2025-03-17 08:21:12]     rows = query.get_compiler(self.db).execute_sql(CURSOR)  
 [EXPORT_WORKER][2025-03-17 08:21:12]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,582: WARNING/ForkPoolWorker-2]   File "/baserow/venv/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1990, in execute_sql  
 [EXPORT_WORKER][2025-03-17 08:21:12]     cursor = super().execute_sql(result_type)  
 [EXPORT_WORKER][2025-03-17 08:21:12]              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,582: WARNING/ForkPoolWorker-2]   File "/baserow/venv/lib/python3.11/site-packages/django/db/models/sql/compiler.py", line 1562, in execute_sql  
 [EXPORT_WORKER][2025-03-17 08:21:12]     cursor.execute(sql, params)  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,583: WARNING/ForkPoolWorker-2]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 79, in execute  
 [EXPORT_WORKER][2025-03-17 08:21:12]     return self._execute_with_wrappers(  
 [EXPORT_WORKER][2025-03-17 08:21:12]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,583: WARNING/ForkPoolWorker-2]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers  
 [EXPORT_WORKER][2025-03-17 08:21:12]     return executor(sql, params, many, context)  
 [EXPORT_WORKER][2025-03-17 08:21:12]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,583: WARNING/ForkPoolWorker-2]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 100, in _execute  
 [EXPORT_WORKER][2025-03-17 08:21:12]     with self.db.wrap_database_errors:  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,584: WARNING/ForkPoolWorker-2]   File "/baserow/venv/lib/python3.11/site-packages/django/db/utils.py", line 91, in __exit__  
 [EXPORT_WORKER][2025-03-17 08:21:12]     raise dj_exc_value.with_traceback(traceback) from exc_value  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,584: WARNING/ForkPoolWorker-2]   File "/baserow/venv/lib/python3.11/site-packages/django/db/backends/utils.py", line 105, in _execute  
 [EXPORT_WORKER][2025-03-17 08:21:12]     return self.cursor.execute(sql, params)  
 [EXPORT_WORKER][2025-03-17 08:21:12]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [EXPORT_WORKER][2025-03-17 08:21:12] [2025-03-17 08:21:12,584: WARNING/ForkPoolWorker-2] django.db.utils.OperationalError: deadlock detected  
 [EXPORT_WORKER][2025-03-17 08:21:12] DETAIL:  Process 940598 waits for ShareLock on transaction 34247827; blocked by process 940641.  
 [EXPORT_WORKER][2025-03-17 08:21:12] Process 940641 waits for ShareLock on transaction 34247832; blocked by process 940598.  
 [EXPORT_WORKER][2025-03-17 08:21:12] HINT:  See server log for query details.  
 [BACKEND][2025-03-17 08:21:13] 195.101.82.105:0 - "GET /api/row_comments/37/1229/?offset=0&limit=50 HTTP/1.1" 200  
 [CELERY_WORKER][2025-03-17 08:21:13] [2025-03-17 08:21:00,142: INFO/ForkPoolWorker-1] Task baserow.ws.tasks.broadcast_to_channel_group[fbf4b9c1-f65a-4161-a1ca-e7d9cc01d90a] succeeded in 0.003354310989379883s: None  
 [CELERY_WORKER][2025-03-17 08:21:13] [2025-03-17 08:21:13,131: INFO/MainProcess] Task baserow.ws.tasks.broadcast_to_channel_group[b6ef2997-1e20-47de-89d6-ef2e60d8ae0c] received  
 [CELERY_WORKER][2025-03-17 08:21:13] [2025-03-17 08:21:13,138: INFO/ForkPoolWorker-1] Task baserow.ws.tasks.broadcast_to_channel_group[b6ef2997-1e20-47de-89d6-ef2e60d8ae0c] succeeded in 0.004915378987789154s: None  
 [BACKEND][2025-03-17 08:21:13] 321|2025-03-17 08:21:13.051|INFO|baserow.core.action.signals:log_action_receiver:28 - do: workspace=1 action_type=update_rows user=9  
 [CELERY_WORKER][2025-03-17 08:21:13] [2025-03-17 08:21:13,186: INFO/MainProcess] Task baserow.ws.tasks.broadcast_to_channel_group[987f1e06-d741-4e3e-a678-daeec00388a0] received  
 [CELERY_WORKER][2025-03-17 08:21:13] [2025-03-17 08:21:13,194: INFO/MainProcess] Task baserow.ws.tasks.broadcast_to_channel_group[614b3283-9bff-4c5f-9238-8cef1af05849] received  
 [CELERY_WORKER][2025-03-17 08:21:13] [2025-03-17 08:21:13,198: INFO/ForkPoolWorker-1] Task baserow.ws.tasks.broadcast_to_channel_group[987f1e06-d741-4e3e-a678-daeec00388a0] succeeded in 0.010430015623569489s: None  
 [BACKEND][2025-03-17 08:21:14] 195.101.82.105:0 - "PATCH /api/database/rows/table/37/1229/ HTTP/1.1" 200  
 [BACKEND][2025-03-17 08:21:19] [2025-03-17 08:21:14 +0000] [319] [INFO] connection closed  

Is there a way to know what these tuples are ?

while updating tuple (65,7) in relation "database_table_38"  

or

while updating tuple (3192,1) in relation "database_table_38" 

Thanks

Hey @Alex-Clapp, this can happen when multiple processes are trying to update a row at the same time. We’re occasionally seeing them in our production environment as well. If you update a row, then there the following can happen under the hood:

  • Update the row itself.
  • Update any rows with formula dependencies.
  • Update the search index for that row.

If there are many depending on formulas and many API requests are being made, then in some cases, then it can result in that error. Can you give me some more insights in how your database schema looks like, and number of API requests, and how many CPUs and memory your server has?

Hello @bram

Thank you for your reply.

The database has around 50 tables with many links and formulas. It’s difficult for me to describe all of it, but I’ll try to explain where the point is, IMO. I can also privately share with you the baserow api documentation that describe it if needed.

Database

The error often happens when we manipulate data with the same schema (mother - children) of data.
For example, we have it with orders and orders line.

The children lines are linked with the “wharehouse” table where we can find all article. Here, stocks are computed with formulas and depend on agency.

Automations

We have automations that runs at line (mother and / or children) creation or update. For example:

  • An order is created → update the order number
  • Articles are added to the order → create corresponding order lines
  • An order is closed → update article prices of all order lines in the warehouse table.
  • etc.

Apps

People interact with the baserow front, as well as with the app builder and with an external application that made API requests to fetch information.

Usages

Let’s say ~20 orders are created a day and 10 people use the apps daily. I don’t have the real number, but I would expect few hundreds of API calls daily.

IT

I use the OVH :

  • b2-7 instance with 7gm or ram, 2 vCore processor to host the baserow docker, in combination with
  • a managed Postgresql database of type Db1-4 composed of 1 node 4go of ram, 2vCoce processor and 80go of storage.

Let me know if you see some improvement that can be made,

Regards,

Hey @Alex-Clapp, thank you so much for the detailed response. Your server specifications, number of API requests, users, and database schema seem to be fine. It’s probably a software bug that we need to look into from our side.

It’s probably going to take some time to investigate, so we would need to plan that. We have an issue on the backlog to investigate this problem here Deadlock updating rows (#2969) · Issues · Baserow / baserow · GitLab. There are some other tasks that we need to look into this month, but I’ve planned to look into it in early Q2.

If you encounter the problem when making an API request, then I recommend retrying that specific request, for now. I hope that’s acceptable.

I’ll get back to you as soon as we know more.

1 Like