On 2/9/2007 12:17 PM, Jeff Frost wrote:
> BTW, thanks Jan...see my followup below.
> 
> On Fri, 9 Feb 2007, Jeff Frost wrote:
> 
>> On Fri, 9 Feb 2007, Jan Wieck wrote:
>>
>>> On 2/9/2007 12:29 AM, Jeff Frost wrote:
>>>> I've been using SYNC and WAIT FOR EVENT for some time since 1.2.x came out
>>>> and I've noticed that occassionally it doesn't seem to work in 1.2.6.  It's
>>>> not every time, just occassionally.  I have a script that looks like this
>>>> (the execute script creates the test table):
>>>>
>>>> ===========
>>>> #!/usr/local/slony/bin/slonik
>>>>
>>>> INCLUDE </home/postgres/lib/preamble.slonik>;
>>>>
>>>> EXECUTE SCRIPT (
>>>>   SET ID = 1,
>>>>   FILENAME = '/home/postgres/sql/create-test-table.sql',
>>>>   EVENT NODE = 1
>>>> );
>>>>
>>>> CREATE SET (id = 9998, origin = 1, comment = 'temp set');
>>>> SET ADD TABLE (set id=9998, origin=1, id=15,
>>>>        FULL QUALIFIED NAME = 'public.test', comment='test table');
>>>>
>>>> SUBSCRIBE SET (id=9998, provider=1, receiver=2);
>>>> WAIT FOR EVENT (origin=2, confirmed =1);
>>>
>>> Add "WAIT ON = 2" to this one.
>>
>> So it would look like:
>>
>> CREATE SET (id = 9998, origin = 1, comment = 'temp set');
>> SET ADD TABLE (set id=9998, origin=1, id=15,
>>         FULL QUALIFIED NAME = 'public.test', comment='test table');
>>
>> SUBSCRIBE SET (id=9998, provider=1, receiver=2);
>> WAIT FOR EVENT (origin=2, confirmed =1);
>> WAIT ON = 2;
> 
> Oh, looks like I found it in the docs, it's just not in the examples..should 
> be like this:
> 
> WAIT FOR EVENT (origin=2,
>       confirmed = 1,
>       wait on = 2);
> 
> Then presumably, the entire thing should look like:
> =======
> #!/usr/local/slony/bin/slonik
> 
> INCLUDE </home/postgres/lib/preamble.slonik>;
> 
> EXECUTE SCRIPT (
>    SET ID = 1,
>    FILENAME = '/home/postgres/sql/create-test-table.sql',
>    EVENT NODE = 1
> );
> 
> CREATE SET (id = 9998, origin = 1, comment = 'temp set');
> SET ADD TABLE (set id=9998, origin=1, id=15,
>         FULL QUALIFIED NAME = 'public.test', comment='test table');
> 
> SUBSCRIBE SET (id=9998, provider=1, receiver=2);
> WAIT FOR EVENT (origin=2, confirmed=1, wait on=2);
> 
> SYNC(id = 1);
> WAIT FOR EVENT (origin=1, confirmed =2, wait on=1);
> 
> MERGE SET ( id = 1, add id = 9998, origin = 1 );
> ========
> 
> yah?

Nod!

Jan

> 
> 
>>
>> SYNC(id = 1);
>> WAIT FOR EVENT (origin=1, confirmed =2);
>>
>> MERGE SET ( id = 1, add id = 9998, origin = 1 );
>>
>> Is that correct?  If so, I don't see it in the docs.
>>
>>
>>
>>>
>>>
>>> Jan
>>>
>>>> SYNC(id = 1);
>>>> WAIT FOR EVENT (origin=1, confirmed =2);
>>>>
>>>> MERGE SET ( id = 1, add id = 9998, origin = 1 );
>>>> ==========
>>>>
>>>> After it runs for a few seconds, I'm greeted with:
>>>>
>>>> DDL on origin - PGRES_TUPLES_OK
>>>> bin/v022-001-create-test-table.slonik:20: PGRES_FATAL_ERROR select
>>>> "_T1".mergeSet(1, 9998);  - ERROR:  Slony-I: set 9998 has subscriptions in
>>>> progress - cannot merge
>>>>
>>>> And of course if I go merge the set manually with pgadmin, it works fine.
>>>>
>>>> But, I thought the whole point of the SYNC followed by WAIT FOR EVENT was
>>>> to make sure the subcription had completed.  Have I read the docs wrong?
>>>> Has it just been working as a race condition before or do I have my syntax
>>>> a little off?
>>>>
>>>
>>>
>>>
>>
>>
> 


-- 
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#================================================== [EMAIL PROTECTED] #
_______________________________________________
Slony1-general mailing list
[email protected]
http://gborg.postgresql.org/mailman/listinfo/slony1-general

Reply via email to