On win32, the blocking libpq functions like PQconnectdb() and
PQexec() are uninterruptible since they use the vanilla select()
instead of our signal emulation layer compatible select().
Nevertheless, currently walreceiver uses them to establish a
connection, send a handshake message and wait for the reply.
So walreceiver also becomes uninterruptible for a while. This
is the must-fix problem for 9.0.
I replaced the blocking libpq functions currently used with
asynchronous ones, and used the emulated version of select()
to wait, to make walreceiver interruptible. Here is the patch.
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center
pgsql-hackers by date
|Next:||From: Kevin Flanagan||Date: 2010-03-10 09:28:40|
|Subject: Re: Access violation from palloc, Visual Studio 2005, C-language function |
|Previous:||From: Pavel Stehule||Date: 2010-03-10 07:39:00|
|Subject: Re: patch (for 9.1) string functions|