[Bucardo-general] Test Failures: Serialized Isolation

David E. Wheeler david at justatheory.com
Sat Oct 20 00:34:26 UTC 2012


Fellow Bucardoans,

I have been having a lot of trouble chasing down test failures in master. I think I nailed most of the ones that I've obviously broken. However, I still get regular failures from t/20-postgres.t. Sometimes they pass, but more often they fail. The attached log.bucardo is from a failed run. Notice that it has a number of isolation errors that do not appear when the tests pass. Here's an example:

(51101) [Fri Oct 19 17:23:30.616 2012] #3792 KID Warning! Aborting due to exception for public.bucardo_test1:? Error was DBD::Pg::db pg_result failed: ERROR:  could not serialize access due to read/write dependencies among transactions\nDETAIL:  Reason code: Canceled on identification as a pivot, during write.\nHINT:  The transaction might succeed if retried. at /Users/david/dev/postgresql/bucardo/Bucardo.pm line 8299.

I suspect this is the source of the failures, and I get the same errors testing against PostgreSQL 9.2 and 9.1.

The [transaction isolation docs](http://www.postgresql.org/docs/9.2/static/transaction-iso.html) say that this error can occur under serializable isolation level, but I could find nothing in the Bucardo code where the isolation level was changed to Serializeable. I looked at the databases that were created, and they are set to read committed.

So:

* Is there somewhere that Bucardo switches to serialized isolation?
* If so, is the isolation retry ignored during tests?
* Or maybe `bucardo kick` does not wait for the sleep period before the retry?

Thanks,

David


-------------- next part --------------
A non-text attachment was scrubbed...
Name: log.bucardo.gz
Type: application/x-gzip
Size: 34506 bytes
Desc: not available
URL: <https://mail.endcrypt.com/pipermail/bucardo-general/attachments/20121019/6e753c11/attachment-0001.gz>


More information about the Bucardo-general mailing list