Re: could not extend file "base/5/3501" with FileFallocate(): Interrupted system call
От | Andres Freund |
---|---|
Тема | Re: could not extend file "base/5/3501" with FileFallocate(): Interrupted system call |
Дата | |
Msg-id | 20230425001623.im5uquriqlk4ayy6@awork3.anarazel.de обсуждение исходный текст |
Ответ на | Re: could not extend file "base/5/3501" with FileFallocate(): Interrupted system call (Andres Freund <andres@anarazel.de>) |
Ответы |
Re: could not extend file "base/5/3501" with FileFallocate(): Interrupted system call
Re: could not extend file "base/5/3501" with FileFallocate(): Interrupted system call Re: could not extend file "base/5/3501" with FileFallocate(): Interrupted system call Re: could not extend file "base/5/3501" with FileFallocate(): Interrupted system call |
Список | pgsql-hackers |
Hi, On 2023-04-24 15:32:25 -0700, Andres Freund wrote: > On 2023-04-24 10:53:35 +0200, Christoph Berg wrote: > > I'm often seeing PG16 builds erroring out in the pgbench tests: > > I don't think the disk is full since it's always hitting that same > > spot, on some of the builds: > > Yea, the EINTR pretty clearly indicates that it's not really out-of-space. FWIW, I tried to reproduce this, without success - not too surprising, I assume it's rather timing dependent. > We obviously can add a retry loop to FileFallocate(), similar to what's > already present e.g. in FileRead(). But I wonder if we shouldn't go a bit > further, and do it for all the fd.c routines where it's remotely plausible > EINTR could be returned? It's a bit silly to add EINTR retries one-by-one to > the functions. > > > The following are documented to potentially return EINTR, without fd.c having > code to retry: > > - FileWriteback() / pg_flush_data() > - FileSync() / pg_fsync() > - FileFallocate() > - FileTruncate() > > With the first two there's the added complication that it's not entirely > obvious whether it'd be better to handle this in File* or pg_*. I'd argue the > latter is a bit more sensible? A prototype of that approach is attached. I pushed the retry handling into the pg_* routines where applicable. I guess we could add pg_* routines for FileFallocate(), FilePrewarm() etc as well, but I didn't do that here. Christoph, could you verify this fixes your issue? Greetings, Andres Freund
Вложения
В списке pgsql-hackers по дате отправления: