Re: [Patch] ALTER SYSTEM READ ONLY

Поиск
Список
Период
Сортировка
От Robert Haas
Тема Re: [Patch] ALTER SYSTEM READ ONLY
Дата
Msg-id CA+TgmoYAYdw103rGSXVvHJxs9NDD5Ja0de1iAH32m01i5j+gbw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: [Patch] ALTER SYSTEM READ ONLY  (Mark Dilger <mark.dilger@enterprisedb.com>)
Ответы Re: [Patch] ALTER SYSTEM READ ONLY  (Mark Dilger <mark.dilger@enterprisedb.com>)
Список pgsql-hackers
On Fri, Sep 10, 2021 at 12:20 PM Mark Dilger
<mark.dilger@enterprisedb.com> wrote:
> A better example may be found in ginmetapage.c:
>
>         needwal = RelationNeedsWAL(indexrel);
>         if (needwal)
>         {
>             CheckWALPermitted();
>             computeLeafRecompressWALData(leaf);
>         }
>
>         /* Apply changes to page */
>         START_CRIT_SECTION();

Yeah, that looks sketchy. Why not move CheckWALPermitted() down a line?

> Even if CheckWALPermitted is assumed to be close enough to atomic to not be a problem (I don't agree), that argument
can'tbe made here, as computeLeafRecompressWALData is not trivial and signals could easily be processed while it is
running.

I think the relevant question here is not "could a signal handler
fire?" but "can we hit a CHECK_FOR_INTERRUPTS()?". If the relevant
question is the former, then there's no hope of ever making it work
because there's always a race condition. But the signal handler is
only setting flags whose only effect is to make a subsequent
CHECK_FOR_INTERRUPTS() do something, so it doesn't really matter when
the signal handler can run, but when CHECK_FOR_INTERRUPTS() can call
ProcessInterrupts().

-- 
Robert Haas
EDB: http://www.enterprisedb.com



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

Предыдущее
От: Jaime Casanova
Дата:
Сообщение: Re: Toast compression method options
Следующее
От: "Bossart, Nathan"
Дата:
Сообщение: Re: parallelizing the archiver