Re: Réplica BDR bloqueada por consulta DLL

From: Martín Díaz <mardiaz28(at)yahoo(dot)com(dot)ar>
To: Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Réplica BDR bloqueada por consulta DLL
Date: 2016-04-25 18:51:03
Message-ID: 881285598.1909615.1461610263836.JavaMail.yahoo@mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Estimados. 
Gracias a la investigación de Matías Novoa (quien espero se sumará pronto a la comunidad), se solucionó el problema.Básicamente lo que hizo fue
1. TRUNCATE  (DELETE no funcionó) de la tabla bdr.bdr_global_locks en el nodo que está bloqueado.2. Reiniciar el postgres en el nodo en cuestión.3. Hacer la consulta UPDATE o DELETE, que permitiría que la consulta DDL que generó todo el bloqueo pueda correr sin errores.Al hacer esto. La consulta DDL se corrió automáticamente, en forma correcta.
Una curiosidad es que en el maestro-prinicipal, cuando los nodos estaban bloqueados (a la espera que la famosa consulta DDL termine), aparecen como inactivos. Al hacer todo este procedimiento, recién vuelven a estar activos.
Espero que esto sirva de aporte por si alguien pasa por esta situación.

El Viernes, 22 de abril, 2016 14:03:49, Martín Díaz <mardiaz28(at)yahoo(dot)com(dot)ar> escribió:

Hola estimados.
Tengo un problema de bloqueo haciendo replicación con BDR.
1- En un server corrí una sentencia: alter table t1 add c1;Esto agregó la columna en todas la tablas. En el nodo donde corrí esta consulta, la tabla t1 no tenía filas. En teoría, no debería haberlas tenido en ningún otro nodo.

2- Luego corrí la consulta: alter table t1 alter column c1 set not nullEl problema fue que, en uno de los nodos, la tabla t1 SI tenía filas. Por lo tanto la instrucción dió error.
3- Cancelé la consulta (2) en el nodo. Pero esta cancelación no se propagó como creía
Según la documentación http://bdr-project.org/docs/0.9.0/ddl-replication-advice.html
"...If DDL is holding the system up for too long, it is possible and safe to cancel the DDL on the originating node like you would cancel any other statement, e.g. with Control-C in psqlor with pg_cancel_backend..."
En el nodo donde corrí la consulta, la tabla quedó con la columna not null. En el nodo donde tenía filas NO (por lo expuesto).El tema es que no puedo seguir replicando xq obtengo error de lokeo por operaciones DLL
Alguien puede ayudarme?
Gracias y saludos

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message jvenegasperu . 2016-04-25 19:29:39 Problema al ejecutar backup
Previous Message Horacio Miranda 2016-04-23 03:23:01 Re: modos de bloqueo