Re: BDR and TX obeyance

Поиск
Список
Период
Сортировка
От Edson Richter
Тема Re: BDR and TX obeyance
Дата
Msg-id BLU436-SMTP176164B5C7ECA778F5B6F02CFF20@phx.gbl
обсуждение исходный текст
Ответ на BDR and TX obeyance  (Riley Berton <rberton@appnexus.com>)
Список pgsql-general
I think this is the nature of "async multi master"...
IMHO, It would be necessary to be "sync multi master" (with two-phase
commit?) to get the behavior you expect.

Atenciosamente,

Edson Carlos Ericksson Richter

Em 04/01/2016 18:09, Riley Berton escreveu:
> I have been experimenting with BDR and have a question about how BDR
> interacts with transactions.
>
> bdrdemo=# create table thingy (id INT, value TEXT, PRIMARY KEY(id));
> CREATE TABLE
> bdrdemo=# create table tx_log(id INT, msg TEXT, PRIMARY KEY(id));
> CREATE TABLE
> bdrdemo=# insert into thingy (id, value) VALUES (1, 'insert from node1');
> INSERT 0 1
>
>  From node1:
>
> bdrdemo=# begin;
> BEGIN
> bdrdemo=# update thingy set value='update from node1' where id=1;
> UPDATE 1
> bdrdemo=# insert into tx_log (id, msg) values (1, 'tx log insert from node1');
> INSERT 0 1
> bdrdemo=# commit;
> COMMIT
>
> Simultaneously from node2:
>
> bdrdemo=# begin;
> BEGIN
> bdrdemo=# update thingy set value='update from node2' where id=1;
> UPDATE 1
> bdrdemo=# insert into tx_log (id, msg) values (2, 'tx log insert from node2');
> INSERT 0 1
> bdrdemo=# commit;
> COMMIT
>
> ...
>
> bdrdemo=# select * from tx_log ;
>   id |           msg
> ----+--------------------------
>    1 | tx log insert from node1
>    2 | tx log insert from node2
> (2 rows)
>
> bdrdemo=# select * from thingy ;
>   id |       value
> ----+-------------------
>    1 | update from node2
> (1 row)
>
> The conflict on the "thingy" table has resulted in node2 winning based
> on last_update wins default resolution.  However, both inserts have
> applied.  My expectation is that the entire TX applies or does not
> apply.  This expectation is clearly wrong.
>
> Question is: is there a way (via a custom conflict handler) to have the
> TX obeyed?  I can't see a way to even implement a simple bank account
> database that changes multiple tables in a single transaction without
> having the data end up in an inconsistent state.  Am I missing something
> obvious here?
>
> Thanks in advance for any help.
>
> riley
>



В списке pgsql-general по дате отправления:

Предыдущее
От: Andy Colson
Дата:
Сообщение: Re: A unique pairs version of UNNEST() ?
Следующее
От: Arthur Pemberton
Дата:
Сообщение: Re: Cannot upgrade from 9.3 to 9.4 using pg_upgrade