Re: [Patch] ALTER SYSTEM READ ONLY

Поиск
Список
Период
Сортировка
От Mark Dilger
Тема Re: [Patch] ALTER SYSTEM READ ONLY
Дата
Msg-id 764084C9-4FA4-4730-A42B-CC0E0EFCF3B0@enterprisedb.com
обсуждение исходный текст
Ответ на Re: [Patch] ALTER SYSTEM READ ONLY  (Mark Dilger <mark.dilger@enterprisedb.com>)
Ответы Re: [Patch] ALTER SYSTEM READ ONLY  (Robert Haas <robertmhaas@gmail.com>)
Список pgsql-hackers

> On Sep 10, 2021, at 8:42 AM, Mark Dilger <mark.dilger@enterprisedb.com> wrote:
>
> Take for example a code stanza from heapam.c:
>
>    if (needwal)
>        CheckWALPermitted();
>
>    /* NO EREPORT(ERROR) from here till changes are logged */
>    START_CRIT_SECTION();
>
> Now, I know that interrupts won't be processed after starting the critical section, but I can see plain as day that
aninterrupt might get processed *during* CheckWALPermitted, since that function isn't atomic.  

A better example may be found in ginmetapage.c:

        needwal = RelationNeedsWAL(indexrel);
        if (needwal)
        {
            CheckWALPermitted();
            computeLeafRecompressWALData(leaf);
        }

        /* Apply changes to page */
        START_CRIT_SECTION();

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.

—
Mark Dilger
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company






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

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