I'm curious to know what the expected behavior is for an insert / update
conflict on a primary key field.

The wiki suggested "divergence conflicts" would be logged and replication
would halt for the downstream master.  There is a case where the databases
"diverge" such that they are no longer consistent, and where no error is
logged and replication continues.

The test case is summarized as inserting a record on a first node with
pkey='x'.  After this record propagates, then insert a record with a
different node with pkey='y', and at the same time update the first node's
record to change the key to 'y'.  Depending on timing, the result is that
the first node will only have a single record, while the other nodes will
have an x and y record.

The full test case is at:
https://github.com/no0p/bdrlab/blob/master/bdrsuite/tests/conflicts/insert_update_conflict.rb

Is this considered a divergence conflict and what is the expected behavior
for this case?

Also is there is a published list of conditions where masters can become
inconsistent and that is expected behavior -- or should that never happen?

Best Regards,
Robert

Reply via email to