Re: Interbloqueo

From: Martín Marqués <martin(at)2ndquadrant(dot)com>
To: Carlos Camilo Fernández Madrazo <kmilo(at)xetid(dot)cu>, pgsql-es-ayuda(at)lists(dot)postgresql(dot)org
Subject: Re: Interbloqueo
Date: 2018-06-02 01:38:02
Message-ID: 10dc1ba7-4568-57ec-e155-90f89b33ae72@2ndquadrant.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 01/06/18 a las 17:59, Carlos Camilo Fernández Madrazo escribió:
> Hola, yo utilizo postgresql en su versión 9.5 y tengo un problema con
> una aplicación que está generando un interbloqueo, las sentencias
> invlocradas están identificadas en el código de mi aplicación y es
> imprescindible su ejecución de esa forma. En los logs adjuntos de
> postgresql se puede ver que la línea con PID [21596-8] ejecuta un SELECT
> sobre la tabla dat-accion y luego en la línea con PID [21595-10] se
> intenta eliminar un trigger asociado a esta misma tabla, en este punto
> la conexión con PID 21595 se queda en estado 'DROP TRIGGER waiting' y la
> conexión con PID 21596 se queda 'idle in transaction' (esto lo puedo
> observar en los procesos del sistema operativo Ubuntu 16.04). Esta
> situación se queda infinitamente si no mato el proceso y sucede siempre
> que llevo a cabo en mi aplicación las acciones que desencadenan la
> ejecución de las sentencias antes mencionadas.
>
> Haciéndole la consulta que se muestra debajo a pg_stat_activity y a
> pg_locks para ver los bloqueos aplicados por postgresql sobre la tabla
> dat_accion se puede ver que existe un bloqueo de tipo
> "AccessExclusiveLock", que según tengo entendido, entra en conflicto con
> el bloqueo "AccessShareLock".
> Alguna idea de por qué ocurre y cómo puedo resolver este problema?

El proceso 21596 ejecuta un select dentro de una transacción, este
adquiere un AccessShareLock (ese bloqueo seguirá hasta que se cierre la
transaccion)

Seguido 21595 trata de quitar un trigger. Esto requiere un
AccessExclusiveLock sobre la misma tabla, que entra en conflicto con el
AccessShareLock de 21596.

El problema esta en que 21596 se queda "idle in transaction", o sea,
tienes un problema en la aplicación que no está cerrando esa transacción.

Saludos,

--
Martín Marqués http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

In response to

  • Interbloqueo at 2018-06-01 20:59:44 from Carlos Camilo Fernández Madrazo

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Guillermo E. Villanueva 2018-06-04 17:43:29 Re: [MASSMAIL]Re: pgpool
Previous Message Carlos Camilo Fernández Madrazo 2018-06-01 20:59:44 Interbloqueo