[Bucardo-general] Questions on `add sync` params

David E. Wheeler david at justatheory.com
Thu Nov 1 21:37:22 UTC 2012


On Nov 1, 2012, at 10:58 AM, Greg Sabino Mullane <greg at endpoint.com> wrote:

> It works for B4 (and has been used in production), but is not working 
> yet for B5. In a nutshell, it creates dummy entries so that a table 
> can be updated by more than one sync. So say I have a sync x that 
> does multimaster between databases A and B. I also have a sync y 
> that does a source->target sync from database B to C. When someone 
> changes a rows on table foobar on database A, Bucardo pushes that 
> change out to B.foobar via the x sync. However, because we disable 
> all triggers and rules when we do the DELETE/COPY, the bucardo_delta 
> table for B.foobar will NOT have the primary keys we just changed. 
> Thus, as far as sync y is concerned, B.foobar has no changes and 
> thus they do not get pushed out to C (all of these could also be source-target, 
> source-source, source-source-target, or whatever).

Right, got it.

> We cannot simply leave those triggers on, else we get into an infinite loop 
> as A.foobar adds a record to B, and then the same sync sees that B has a 
> change and pushes it out to A, which then records the change...

Of course.

> Thus, makedelta: it adds an entry in bucardo_delta for that table, but 
> also adds an entry to bucardo_track. In the example above, it will 
> add a bucardo_delta entry for B.foobar, and a matching bucardo_track 
> entry so that sync x thinks it has already processed that change (which 
> it has).

It would need to be turned on for database B, or for the table synced by sync x?

What happens if there is no sync y? Does the makedelta then trigger a sync from B to A?

I am going to need this feature, actually. Thinking it might need a more descriptive name, though.

Actually, I'm wondering why this wouldn't just happen everywhere, anyway, unless it has unwanted side-effects…

Best,

David



More information about the Bucardo-general mailing list