[Bucardo-general] cannot delete in a read-only transaction

Greg Sabino Mullane greg at endpoint.com
Tue Jun 7 17:56:50 UTC 2016

On Tue, May 31, 2016 at 08:16:50AM +0000, Videanu Adrian wrote:
> Hi all,
> I have a 4 master bucardo setup which works as it should, only that sometimes i get this kind of messages in log: 
> Any idea why this is happening ?

> ... VAC was killed at line 7727: DBD::Pg::st pg_result failed: ERROR:  cannot execute DELETE in a read-only transaction

I think this is a bug. While we go out of our way to set transaction isolation when connecting 
to sources and targets, the VAC has no such check. Obviously, it needs to override read_only 
if it is set. Try this patch:

diff --git a/Bucardo.pm b/Bucardo.pm
index 1f8870e..60f04a7 100644
--- a/Bucardo.pm
+++ b/Bucardo.pm
@@ -5787,6 +5787,12 @@ sub connect_database {
+    ## If this is a vacuum process, make sure it can write to the database!
+    if ('VAC' eq $self->{logprefix}) {
+        $dbh->do(qq{SET default_transaction_read_only = off});
+        $dbh->commit();
+    }
     return $backend, $dbh;
 } ## end of connect_database

Greg Sabino Mullane greg at endpoint.com
End Point Corporation
PGP Key: 0x14964AC8
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 163 bytes
Desc: not available
URL: <https://mail.endcrypt.com/pipermail/bucardo-general/attachments/20160607/f7b10979/attachment.sig>

More information about the Bucardo-general mailing list