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
|
Список | 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 по дате отправления: