bugzilla-daemon at main.slony.info bugzilla-daemon at main.slony.info
Wed Aug 11 13:36:45 PDT 2010
http://www.slony.info/bugzilla/show_bug.cgi?id=137

--- Comment #2 from Jan Wieck <janwieck at yahoo.com> 2010-08-11 13:36:45 PDT ---
This is an MVCC problem. Consider the following time line with xact2 being the
EXECUTE SCRIPT done by slonik:

xact1: begin;
xact1: insert ...

xact2: begin;
xact2: select ddlScript_prepare_int(); -- Creates SYNC event

xact1: commit;

xact2: delete ...

This is running in read committed mode, so the delete of xact2 will see the
row, inserted by xact1 and delete it. However, the SYNC was created before
xact1 committed, so it is considered IN PROGRESS. This causes the insert not to
be part of the SYNC and it will get replicated after the ddl script delete.

To fix this, slonik needs to issue LOCK TABLE statements right after "begin;".
That way, it will wait until all conflicting transactions have committed before
generating its own snapshot. 

We need new syntax to add this information to the EXECUTE SCRIPT command and it
will be the responsibility of the user to provide the list of tables to lock.


Jan

-- 
Configure bugmail: http://www.slony.info/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
You are the assignee for the bug.


More information about the Slony1-bugs mailing list