Fri May 13 20:18:34 PDT 2005
- Previous message: [Slony1-general] Re: BUG: [SLONY1] Table updates via plperl triggers fail to replicate (ID: 1293) (comment)
- Next message: [Slony1-general] Master and a few slaves (slony version 1.0.5) configuration issues. " Error: ev_origin
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Fri, 2005-05-13 at 12:16 -0400, Jan Wieck wrote:
> On 5/13/2005 9:30 AM, Hannu Krosing wrote:
>
> > On R, 2005-05-13 at 08:23 -0400, Jan Wieck wrote:
> >> On 5/13/2005 6:38 AM, Hannu Krosing wrote:
> >>
> >> The Slony-I log trigger is an AFTER trigger. Only BEFORE triggers can
> >> modify NEW. Everything that tries to modify a tuple once stored has to
> >> issue another query, thereby creating new row versions and firing the
> >> log trigger again.
> >>
> >> I still have to see a test case where plperl succeeds in confusing the
> >> trigger manager so much that it forgets to fire AR triggers. That would
> >> be the only way how what Sven claims could have happened.
> >
> > We had a similar problem with a BEFORE trigger (in pl/pgsql) that
> > modified NEW after doing a lookup from another table. and then another
> > AFTER trigger modified that row from that another table which had also
> > both BEFORE and AFTER triggers.
>
> Well, doing an update to a row in an AFTER trigger, and another BEFORE
> trigger depends on that row ... I have seen simpler methods to get your
> foot shot, but this certainly works ;-)
>
> >
> > Could it be that ion some cases the slony UPDATEs stored inside the same
> > transaction can be stored in different order then they actually
> > happened ?
>
> Hmmm ... I am not 100% sure about the trigger firing order. If an update
> to a row fires an AFTER trigger that called before the slony log
> trigger, and that AFTER trigger now updates something else ... is the
> log trigger fired for "something else" possibly called before the first
> slony log trigger fires or not? Gotta check this ...
>
> >
> > I'll see if I can come up with a simple test case.
> >
> > And it was not "reproducable" in the sense that it happened every time,
> > but it did happen several times. (pg 7.4.5 slony 1.0.5)
> >
>
> Some test cases require a dropdb, createdb cycle to reproduce. Our
> regression test might not even succeed without it.
>
>
> Jan
>
I have reproduced the problem again but the steps to reproducing this
are utterly bizarre. First let me clarify that these updates are not
being done via a trigger but rather a select function_name(arg) and this
function performs the insert. Here is how I reproduced this peculiar
problem.
1) ORIGIN:su to root on box and psql -U <psql superuser> <dbname>
2) ORIGIN: create table and it's primary key
3) SUBSCRIBER: create table and it's primary key (using copy/paste from
other terminal)
4) ORIGIN: slonik: create new set, add table to set, subscribe set
5) ORIGIN run perltest(int) function:
------------
my $query = "insert into perltest4(id,prefix,description,carrier,rate)
SELECT ";
$query .= "$_[0],prefix,description,carrier,rate from
innat_rootdecks ";
$query .= "where id = 40;";
$rv = spi_exec_query($query);
return "done";
-------------
like : select perltest(45);
6) ORIGIN: select * from "_T2".sl_log_1 shows the inserts
7) SUBSCRIBER: sees the new rows (about 5k).
... so far so good .. I can repeat 5-7 and all works fine .. now it gets
strange
8) ORIGIN: quit psql session and leave root shell such that I am in my
own shell again.
9) ORIGIN: start a new psql session using the same superuser name as in
step 1.
10) ORIGIN: select perltest(57);
11) ORIGIN verify inserts happening into table BUT: "_T2".sl_log_1 is
empty and this batch insert does not get replicated.
12) SUBSCRIBER: new rows do not appear in the table
... more oddly:
13) ORIGIN: select perltest(74);
14) ORIGIN: verify inserts happen and now "_T2".sl_log_1 has the inserts
but just for this last run (id = 74).
15) SUBSCRIBER: verify that the set for id=74 did replicate. the set for
id = 57 never did replicate and now the two tables are out of sync.
Sven
- Previous message: [Slony1-general] Re: BUG: [SLONY1] Table updates via plperl triggers fail to replicate (ID: 1293) (comment)
- Next message: [Slony1-general] Master and a few slaves (slony version 1.0.5) configuration issues. " Error: ev_origin
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-general mailing list