Thread: BDR Error recovery

BDR Error recovery

From
"pba@mailme.dk"
Date:
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




Re: BDR Error recovery

From
Andres Freund
Date:
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