[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