Re: checkpointer continuous flushing
От | Amit Kapila |
---|---|
Тема | Re: checkpointer continuous flushing |
Дата | |
Msg-id | CAA4eK1K=WAtU=mCaPw3-anviPyz_8ioR3-vO2Je5S1bjrfLEvQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: checkpointer continuous flushing (Andres Freund <andres@anarazel.de>) |
Ответы |
Re: checkpointer continuous flushing
|
Список | pgsql-hackers |
>
> On 2016-01-07 11:27:13 +0100, Fabien COELHO wrote:
> > I read your patch and I know what I want to try to have a small and simple
> > fix. I must admit that I have not really understood in which condition the
> > checkpointer would decide to close a file, but that does not mean that the
> > potential issue should not be addressed.
>
> There's a trivial example: Consider three tablespaces and
> max_files_per_process = 2. The balancing can easily cause three files
> being flushed at the same time.
>
mdsync()
{
..
/*
* It is possible that the relation has been dropped or
* truncated since the fsync request was entered.
* Therefore, allow ENOENT, but only if we didn't fail
* already on this file. This applies both for
* _mdfd_getseg() and for FileSync, since fd.c might have
* closed the file behind our back.
*
* XXX is there any point in allowing more than one retry?
* Don't see one at the moment, but easy to change the
* test here if so.
*/
if (!FILE_POSSIBLY_DELETED(errno) ||
failures > 0)
ereport(ERROR,
(errcode_for_file_access(),
errmsg("could not fsync file \"%s\": %m",
path)));
else
ereport(DEBUG1,
(errcode_for_file_access(),
errmsg("could not fsync file \"%s\" but retrying: %m",
path)));
В списке pgsql-hackers по дате отправления: