Agent-Hellboy / Agent-Hellboy/pg_retry

Explore the flaky `test_concurrent_deadlocks_are_retried` system test

Abierto
#7 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Python
Estrellas
3
Forks
0
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

```
=================================== FAILURES ===================================
____________________ test_concurrent_deadlocks_are_retried _____________________

pg_cluster =

def test_concurrent_deadlocks_are_retried(pg_cluster):
"""Use many workers grabbing advisory locks in opposite order."""
dsn = pg_cluster.dsn()
pg_cluster.truncate_log()
pg_cluster.run_sql("SELECT retry.configure_failure_plan('forced_deadlock', '40P01', 12)")

deadlocks_before = fetch_scalar(
dsn,
"""
SELECT pg_stat_get_db_deadlocks(oid)
FROM pg_database
WHERE datname = current_database()
""",
)

statements = [
"SELECT retry.transfer_with_advisory(1, 2, 1, 30, 'forced_deadlock')",
"SELECT retry.transfer_with_advisory(2, 1, 1, 30, NULL)",
] * 6
random.shuffle(statements)

with ThreadPoolExecutor(max_workers=len(statements)) as pool:
futures = [pool.submit(run_retry_sql, dsn, stmt) for stmt in statements]
for future in futures:
> future.result(timeout=60)

system_tests/test_retry_concurrency.py:32:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.12/concurrent/futures/_base.py:449: in result
return self.__get_result()
^^^^^^^^^^^^^^^^^^^
/usr/lib/python3.12/concurrent/futures/_base.py:401: in __get_result
raise self._exception
/usr/lib/python3.12/concurrent/futures/thread.py:58: in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
system_tests/utils.py:20: in run_retry_sql
cur.execute(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self =
query = 'SELECT retry.retry(%s, %s, %s, %s)'
params = ('SELECT retry.transfer_with_advisory(2, 1, 1, 30, NULL)', 16, 5, 250)

def execute(
self,
query: Query,
params: Params | None = None,
*,
prepare: bool | None = None,
binary: bool | None = None,
) -> Self:
"""
Execute a query or command to the database.
"""
try:
with self._conn.lock:
self._conn.wait(
self._execute_gen(query, params, prepare=prepare, binary=binary)
)
except e._NO_TRACEBACK as ex:
> raise ex.with_traceback(None)
E psycopg.errors.DeadlockDetected: deadlock detected
E DETAIL: Process 6339 waits for ExclusiveLock on advisory lock [16384,0,1,1]; blocked by process 6336.
E Process 6336 waits for ExclusiveLock on advisory lock [16384,0,2,1]; blocked by process 6339.
E HINT: See server log for query details.
E CONTEXT: SQL statement "SELECT pg_advisory_xact_lock(second_id)"
E PL/pgSQL function retry.transfer_with_advisory(integer,integer,integer,integer,text) line 15 at PERFORM
E SQL statement "SELECT retry.transfer_with_advisory(2, 1, 1, 30, NULL)"

../../../.local/lib/python3.12/site-packages/psycopg/cursor.py:97: DeadlockDetected
----------------------------- Captured stdout call -----------------------------
configure_failure_plan
------------------------

(1 row)

----------------------------- Captured stderr call -----------------------------
NOTICE: schema "retry" already exists, skipping
=========================== short test summary info ============================
FAILED system_tests/test_retry_concurrency.py::test_concurrent_deadlocks_are_retried - psycopg.errors.DeadlockDetected: deadlock detected
DETAIL: Process 6339 waits for ExclusiveLock on advisory lock [16384,0,1,1]; blocked by process 6336.
Process 6336 waits for ExclusiveLock on advisory lock [16384,0,2,1]; blocked by process 6339.
HINT: See server log for query details.
CONTEXT: SQL statement "SELECT pg_advisory_xact_lock(second_id)"
PL/pgSQL function retry.transfer_with_advisory(integer,integer,integer,integer,text) line 15 at PERFORM
SQL statement "SELECT retry.transfer_with_advisory(2, 1, 1, 30, NULL)"
======================== 1 failed, 26 passed in 38.01s =========================
make: *** [Makefile:56: systemtest] Error 1
Error: Process completed with exit code 2.
```

https://github.com/Agent-Hellboy/pg_retry/actions/runs/19405445879/job/55519391799

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.