On Tue, May 25, 2021 at 12:06 PM Pavan Deolasee
<pavan.deola...@gmail.com> wrote:
>
> Hi,
>
> While working on an output plugin that uses streaming protocol, I hit an 
> assertion failure. Further investigations revealed a possible bug in core 
> Postgres. This must be new to PG14 since streaming support is new to this 
> release. I extended the 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. More concretely, after 
> `ReorderBufferProcessPartialChange()` processes the in-progress transaction,  
> `ReorderBufferTruncateTXN()` truncates the accumulated changed in the 
> transaction, but fails to adjust the buffer size for toast 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


Reply via email to