[Pgpool-hackers] Patch to avoid crashes after adding new node in Master/Slave mode

Tatsuo Ishii ishii at sraoss.co.jp
Sat Aug 20 04:19:55 UTC 2011


> Thanks for analyzing the problem and patches.
> 
>>     The ability to add new slave nodes, without requiring a restart was
>> added in commit [1].
>> 
>>     One problem that was overlooked was that in main(), when initializing
>> my_backend_status[], only NUM_BACKENDS number of elements of that array are
>> initialized and used for the rest of the life of the pool_worker_child
>> process. Since the NUM_BACKEDS increases everytime a new slave backend is
>> added, but the corresponding element in the private array is still NULL, the
>> pool_worker_child crashes when trying to check VALID_BACKEND(i) in
>> establish_persistent_connection().
>> 
>>     The attached micro patch avoids the crashes by initializing the private
>> array's all MAX_NUM_BACKENDS instead of just NUM_BACKENDS.
>> 
>>     This will also avoid crashes of pcp_attach_node when it tries to check
>> VALID_BACKEND() in send_failback_request(). It crashes because, same as
>> above, its private array is initialized only up to NUM_BACKENDS and the ID
>> of the new slave node being attached is greater than current NUM_BACKENDS.
>> 
>>     The bigger concern, which this patch does not address, is that of
>> keeping my_backend_status[] up-to-date in pool_worker_child process and any
>> other auxiliary processes.
> 
> Ok. For this I will add a flag on shared memory area which is set by
> main process. pool_worker_child process and other auxiliary processes
> (curretly it's only pcp process) will check the flag and restart
> itself if the flag is set.

Included patches let pgpool main send SIGUSR1 signal to worker process
and pcp process to restart them whenever they are convenient.
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese: http://www.sraoss.co.jp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pgpool.patch
Type: text/x-patch
Size: 4725 bytes
Desc: not available
URL: <http://pgfoundry.org/pipermail/pgpool-hackers/attachments/20110820/5a83ea62/attachment.bin>


More information about the Pgpool-hackers mailing list