pgsql: Fix reorder buffer memory accounting for toast changes.

From: Amit Kapila <akapila(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix reorder buffer memory accounting for toast changes.
Date: 2021-09-13 05:26:27
Message-ID: E1mPeU7-0000Eg-HX@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix reorder buffer memory accounting for toast changes.

While processing toast changes in logical decoding, we rejigger the
tuple change to point to in-memory toast tuples instead to on-disk toast
tuples. And, to make sure the memory accounting is correct, we were
subtracting the old change size and then after re-computing the new tuple,
re-adding its size at the end. Now, if there is any error before we add
the new size, we will release the changes and that will update the
accounting info (subtracting the size from the counters). And we were
underflowing there which leads to an assertion failure in assert enabled
builds and wrong memory accounting in reorder buffer otherwise.

Author: Bertrand Drouvot
Reviewed-by: Amit Kapila
Backpatch-through: 13, where memory accounting was introduced
Discussion: https://postgr.es/m/92b0ee65-b8bd-e42d-c082-4f3f4bf12d34@amazon.com

Branch
------
REL_14_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/f5e0ff4631b5402950db69c989c88c4c6295504b

Modified Files
--------------
src/backend/replication/logical/reorderbuffer.c | 36 ++++++++++++++++---------
1 file changed, 23 insertions(+), 13 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Etsuro Fujita 2021-09-13 08:40:44 pgsql: Doc: Remove type information for import_generated in postgres-fd
Previous Message Michael Paquier 2021-09-13 04:26:29 pgsql: Fix error handling with threads on OOM in ECPG connection logic