Re: Interrupting long external library calls

Поиск
Список
Период
Сортировка
От Sandro Santilli
Тема Re: Interrupting long external library calls
Дата
Msg-id 20120524130421.GB17214@gnash
обсуждение исходный текст
Ответ на Re: Interrupting long external library calls  (Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>)
Ответы Re: Interrupting long external library calls  (Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>)
Re: Interrupting long external library calls  (Florian Pflug <fgp@phlo.org>)
Список pgsql-hackers
On Wed, May 16, 2012 at 07:30:03PM +0300, Heikki Linnakangas wrote:
> On 16.05.2012 15:42, Sandro Santilli wrote:
> >But CHECK_FOR_INTERRUPTS doesn't return, right ?
> >Is there another macro for just checking w/out yet acting upon it ?
> 
> Hmm, no. CHECK_FOR_INTERRUPTS() checks the InterruptPending
> variable, but on Windows it also checks for
> UNBLOCKED_SIGNAL_QUEUE(). And even if InterruptPending is set, it's
> not totally certain that CHECK_FOR_INTERRUPTS() won't return. I
> think InterruptPending can be set spuriously (even if that's not
> possible today, I wouldn't rely on it), and if you're in a
> HOLD/RESUME_INTERRUPTS block, CHECK_FOR_INTERRUPTS() will do nothing
> even if InterruptPending is true.
> 
> The only sane way to make 3rd party code interruptible is to add
> CHECK_FOR_INTERRUPTS() to it, in safe places.

No place is safe if CHECK_FOR_INTERRUPTS doesn't return.
How could caller code cleanup on interruption ?

--strk; 


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Thom Brown
Дата:
Сообщение: Re: pg_receivexlog stops upon server restart
Следующее
От: Sergey Koposov
Дата:
Сообщение: 9.2beta1, parallel queries, ReleasePredicateLocks, CheckForSerializableConflictIn in the oprofile