Christopher Browne wrote:
> Julian Scarfe wrote:
>   
>> So with 1.2RC3 I'm still seeing the same behaviour as I reported below (no 
>> replies received to that).
>>
>> I have 10 sets (numbered 1001, 2001,... 10001) with initial origin on node 
>> 1.
>>
>> On attempting to switchover all of them to node 2, I'm getting FATAL errors 
>> on the 2nd and subsequent MOVE SETs:
>>
>> $ grep -a "MOVE" /tmp/slon-avbrief.out
>> 2006-08-17 10:01:42 UTC DEBUG2 localListenThread: Received event 1,214 
>> MOVE_SET
>> 2006-08-17 10:01:44 UTC DEBUG2 localListenThread: Received event 1,217 
>> MOVE_SET
>> 2006-08-17 10:01:44 UTC FATAL  localListenThread: MOVE_SET but no provider 
>> found for set 2001
>> 2006-08-17 10:01:56 UTC DEBUG2 localListenThread: Received event 1,219 
>> MOVE_SET
>> 2006-08-17 10:01:56 UTC FATAL  localListenThread: MOVE_SET but no provider 
>> found for set 3001
>> ...
>> 2006-08-17 10:03:20 UTC DEBUG2 localListenThread: Received event 1,240 
>> MOVE_SET
>> 2006-08-17 10:03:20 UTC FATAL  localListenThread: MOVE_SET but no provider 
>> found for set 10001
>>
>> Of course with the new behaviour of slon in 1.2, it restarts after 10 
>> seconds and processes another MOVE SET successfully before dying at the 
>> second attempt.  So eventually the process completes.  As a side issue, if I 
>> could modify the sleep time before restart to 1 second, the FATAL might be 
>> acceptable, but 10 seconds per set is too long.
>>
>> Unless I'm misunderstanding, it looks like Christopher diagnosed the problem 
>> in the message referenced below, but I can't see any corresponding 
>> modification in HEAD to rewrite the query to include the set_id (sub_set).
>>
>>      slon_mkquery(&query2,
>>                                                       "select sub_provider 
>> from %s.sl_subscribe "
>>                                                       "    where 
>> sub_receiver = %d",
>>                                                       rtcfg_namespace, 
>> rtcfg_nodeid);
>>                              res2 = PQexec(dbconn, dstring_data(&query2));
>> ...
>>      if (PQntuples(res2) != 1)
>>                              {
>>                                      slon_log(SLON_FATAL, 
>> "localListenThread: MOVE_SET "
>>                                                       "but no provider found 
>> for set %d\n",
>>                                                       set_id);
>>                                      dstring_free(&query2);
>>                                      PQclear(res2);
>>                                      slon_retry();
>>                              }
>>
>> Am I missing something?
>>   
>>     
> I probably am...
>
> I'll see to adding a test for this today (e.g. - a MOVE SET test with
> ~10 sets).
>
> Adding "and sub_set = %d' to the query looks likely to work out OK...
>
>   
There's now a test, and that does seem to work OK.


_______________________________________________
Slony1-general mailing list
[email protected]
http://gborg.postgresql.org/mailman/listinfo/slony1-general

Reply via email to