Re: invisible commit question for sync replication

Поиск
Список
Период
Сортировка
От qihua wu
Тема Re: invisible commit question for sync replication
Дата
Msg-id CAPoYtoJHcdGjxkXfM0D5rNOOb8KZOH+V7csjPZKT-42_bVw+jg@mail.gmail.com
обсуждение исходный текст
Ответ на Re: invisible commit question for sync replication  (Laurenz Albe <laurenz.albe@cybertec.at>)
Список pgsql-general
In the code it will write a warning to postgresql log. Why not also write the detailed sql? with the exact sql, DBA might do something to fix the issue.

if (ProcDiePending)
{
   ereport(WARNING,
   (errcode(ERRCODE_ADMIN_SHUTDOWN),
   errmsg("canceling the wait for synchronous replication and terminating connection due to administrator command"),
   errdetail("The transaction has already committed locally, but might not have been replicated to the standby.")));
   whereToSendOutput = DestNone;
   SyncRepCancelWait();
   break;
}

On Wed, Feb 1, 2023 at 4:38 PM Laurenz Albe <laurenz.albe@cybertec.at> wrote:
On Wed, 2023-02-01 at 14:52 +0800, qihua wu wrote:
> When run a cluster with sync replication, if DML is done on primary, but primary is
> isolated from all slave, then the DML will hang, if cancel it DML, it will say:
> WARNING:  canceling wait for synchronous replication due to user request
> DETAIL:  The transaction has already committed locally, but might not have been replicated to the standby
>
> So the workflow is
> 1: commit to local.
> 2: waiting for ACK from remote sync.
>
> When cancel the DML at step 2. the data are arealy on local, that's why it's warning.
>
> But when runs an insert which is waiting for remote ACK, and then query from another
> session, I didn't find that row. Why this happen? If the insert is already one locally,
> whey another session can't read it?

COMMIT is not as atomic as it appears.  When the backend is waiting for the standby,
it has already committed the transaction on disk, but that fact is not advertised to
the other backends yet.

Yours,
Laurenz Albe

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

Предыдущее
От: Laurenz Albe
Дата:
Сообщение: Re: invisible commit question for sync replication
Следующее
От: Matthias Apitz
Дата:
Сообщение: database postgres not found