Re: EINTR in ftruncate() - Mailing list pgsql-hackers

From Alvaro Herrera
Subject Re: EINTR in ftruncate()
Date
Msg-id 20220701175516.elwda36gwmfqw2c4@alvherre.pgsql
Whole thread Raw
In response to Re: EINTR in ftruncate()  (Andres Freund <andres@anarazel.de>)
Responses Re: EINTR in ftruncate()
List pgsql-hackers
On 2022-Jul-01, Andres Freund wrote:

> On 2022-07-01 17:41:05 +0200, Alvaro Herrera wrote:
> > Nicola Contu reported two years ago to pgsql-general[1] that they were
> > having sporadic query failures, because EINTR is reported on some system
> > call.  I have been told that the problem persists, though it is very
> > infrequent.  I propose the attached patch.  Kyotaro proposed a slightly
> > different patch which also protects write(), but I think that's not
> > necessary.
> 
> What is the reason for the || ProcDiePending || QueryCancelPending bit? What
> if there's dsm operations intentionally done while QueryCancelPending?

That mirrors the test for the other block in that function, which was
added by 63efab4ca139, whose commit message explains:

    Allow DSM allocation to be interrupted.
    
    Chris Travers reported that the startup process can repeatedly try to
    cancel a backend that is in a posix_fallocate()/EINTR loop and cause it
    to loop forever.  Teach the retry loop to give up if an interrupt is
    pending.  Don't actually check for interrupts in that loop though,
    because a non-local exit would skip some clean-up code in the caller.

Thanks for looking!

-- 
Álvaro Herrera         PostgreSQL Developer  —  https://www.EnterpriseDB.com/



pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: Issue with pg_stat_subscription_stats
Next
From: Bruce Momjian
Date:
Subject: Re: First draft of the PG 15 release notes