BDR Error recovery

Started by pba@mailme.dkover 11 years ago2 messagesgeneral
Jump to latest
#1pba@mailme.dk
pba@mailme.dk

Ubuntu 14.04 with compiled BDR 0.7.1

This is a very interesting project for a lot of potential applications.
However as in any project there will be a few initial issues.

My question is how do I recover from DDL errors ?

For example: given a setup of 2 BDR PostgreSQL hosts and on one of them
execute the following SQL:

create table test_table(id int);
create or replace view test_view as select * from test_table;
create or replace view test_view as select * from test_table;

This will result in an endless replication error. As far as I understand
because it is replicated as:

create table test_table(id int);
create view test_view as select * from test_table;
create view test_view as select * from test_table;

But rather than having you fix the problem I would be much more
interesting in learning how to recover from such as scenario.

Thanks

Poul

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

#2Andres Freund
andres@anarazel.de
In reply to: pba@mailme.dk (#1)
Re: BDR Error recovery

Hi,

On 2014-09-15 19:52:35 +0200, pba@mailme.dk wrote:

Ubuntu 14.04 with compiled BDR 0.7.1

This is a very interesting project for a lot of potential
applications.

Good to hear!

However as in any project there will be a few initial issues.

Definitely.

My question is how do I recover from DDL errors ?

For example: given a setup of 2 BDR PostgreSQL hosts and on one of them
execute the following SQL:

create table test_table(id int);
create or replace view test_view as select * from test_table;
create or replace view test_view as select * from test_table;

This will result in an endless replication error. As far as I understand
because it is replicated as:

create table test_table(id int);
create view test_view as select * from test_table;
create view test_view as select * from test_table;

Hm. That's obviously a bug. Even though not your main point, we'll fix
it :)

But rather than having you fix the problem I would be much more
interesting in learning how to recover from such as scenario.

Currently it's a bit annoying. We're working on making the UI for it
better. All you can currently do is to skip the transaction doing the
DDL using pg_replication_identifier_advance(). Which requires some
fiddling around.
It's on our roadmap to make
a) skipping the replication of a transaction easier
b) allow to skip individual problematic actions in a transaction

Greetings,

Andres Freund

--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general