Hi, On Thu, Aug 13, 2009 at 2:24 AM, Magnus Hagander<mag...@hagander.net> wrote: > Not sure. Potentially pure luck. SIGINT has never *worked*, though, it > just hasn't crashed.
OK. > We could implement the same type of check in pg_standby, but it > requires something like CHECK_FOR_INTERRUPTS. And these interrupts > won't, by default, cause any kind of interruption of the process. In > the backend, we interrupt socket calls because we have the socket > wrapper layer, and nothing else. I don't know how doable this would be > in pg_standby - does it always block on a single thing where we could > stick some win32 synchronization code? If it's a single, or limited, > places we could implement something similar to the backend. But if we > need to interrupt at arbitrary locations, that's just not possible. I think that CHECK_FOR_INTERRUPTS should be placed just before checking the flag 'signaled' which may be enabled by the signal handler. Here is the pseudo-code. -------------------- { /* Check for trigger file or signal first */ CheckForExternalTrigger(); + #ifdef WIN32 + CHECK_FOR_INTERRUPTS(); + #endif /* WIN32 */ if (signaled) { Failover = FastFailover; -------------------- Regards, -- Fujii Masao NIPPON TELEGRAPH AND TELEPHONE CORPORATION NTT Open Source Software Center -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs