Re: Assertion failure while streaming toasted data

Поиск
Список
Период
Сортировка
От Dilip Kumar
Тема Re: Assertion failure while streaming toasted data
Дата
Msg-id CAFiTN-veE__B0U5=0H+U4-i+KzwFz1r_yx=CMehkmUHQRLYGwA@mail.gmail.com
обсуждение исходный текст
Ответ на Assertion failure while streaming toasted data  (Pavan Deolasee <pavan.deolasee@gmail.com>)
Ответы Re: Assertion failure while streaming toasted data  (Dilip Kumar <dilipbalaut@gmail.com>)
Список pgsql-hackers
On Tue, May 25, 2021 at 12:06 PM Pavan Deolasee
<pavan.deolasee@gmail.com> wrote:
>
> Hi,
>
> While working on an output plugin that uses streaming protocol, I hit an assertion failure. Further investigations
revealeda possible bug in core Postgres. This must be new to PG14 since streaming support is new to this release. I
extendedthe test_decoding regression test to demonstrate the failure. PFA 
>
> ```
> 2021-05-25 11:32:19.493 IST client backend[68321] pg_regress/stream STATEMENT:  SELECT data FROM
pg_logical_slot_get_changes('regression_slot',NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', ' 
> 1', 'stream-changes', '1');
> TRAP: FailedAssertion("txn->size == 0", File: "reorderbuffer.c", Line: 3476, PID: 68321)
> ```
>
> From my preliminary analysis, it looks like we fail to adjust the memory accounting after streaming toasted tuples.
Moreconcretely, after `ReorderBufferProcessPartialChange()` processes the in-progress transaction,
`ReorderBufferTruncateTXN()`truncates the accumulated changed in the transaction, but fails to adjust the buffer size
fortoast chunks. Maybe we are missing a call to `ReorderBufferToastReset()` somewhere? 
>
> From what I see, the assertion only triggers when data is inserted via COPY (multi-insert).
>
> Let me know if anything else is needed to reproduce this.

Thanks, I will look into this and let you know if need some help.

--
Regards,
Dilip Kumar
EnterpriseDB: http://www.enterprisedb.com



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

Предыдущее
От: "tanghy.fnst@fujitsu.com"
Дата:
Сообщение: RE: [HACKERS] logical decoding of two-phase transactions
Следующее
От: Masahiko Sawada
Дата:
Сообщение: Re: Skipping logical replication transactions on subscriber side