Estou usando o Postgresql 11.
Encontrei um erro semelhante ao seguinte em meus logs:
org.postgresql.util.PSQLException: ERROR: deadlock detected
Detail: Process 332091 waits for ShareLock on transaction 99896257; blocked by process 332093.
Process 332093 waits for ShareLock on transaction 99923910; blocked by process 332091.
Hint: See server log for query details.
Where: while locking tuple (884208,33) in relation "tab_1"
SQL statement "SELECT 1 FROM ONLY "sch"."tab_1" x WHERE "tab_1_key" OPERATOR(pg_catalog.=) $1 FOR KEY SHARE OF x"
SQL statement "INSERT INTO sch.tab_2 (col1, col2, ..., coln)
SELECT
col1,
col2,
...
coln
FROM
sch.tab_3
LEFT JOIN sch.tab_4
ON tab_4.id = tab_3.id
LEFT JOIN sch.tab_5
ON tab_5.id = tab_3.id
Então, basicamente, a primeira consulta se parece com alguma consulta interna do banco de dados, nada do meu código.
E parece que está causando um impasse com minha consulta. Mas eles não estão relacionados por nenhuma tabela.
Alguma idéia sobre como rastrear o motivo do impasse nesse caso?