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


Attachment: log.bucardo.gz
Description: GNU Zip compressed data

_______________________________________________
Bucardo-general mailing list
[email protected]
https://mail.endcrypt.com/mailman/listinfo/bucardo-general

Reply via email to