]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Fix ReorderBuffer memory overflow check.
authorAmit Kapila <akapila@postgresql.org>
Wed, 10 Jun 2020 04:50:10 +0000 (10:20 +0530)
committerAmit Kapila <akapila@postgresql.org>
Wed, 10 Jun 2020 05:02:31 +0000 (10:32 +0530)
commit16a8d5cf0337724affc4bbb3e8ba07f748f00898
tree9cdaf64454a63d9b6817e11af4dda270a6fa9660
parenta5202889b4c78e8ffcdd8be35d59f0a7aa644f64
Fix ReorderBuffer memory overflow check.

Commit cec2edfa78 introduced logical_decoding_work_mem to limit
ReorderBuffer memory usage. We spill the changes once the memory occupied
by changes exceeds logical_decoding_work_mem.  There was an assumption
in the code that by evicting the largest (sub)transaction we will come
under the memory limit as the selected transaction will be at least as
large as the most recent change (which caused us to go over the memory
limit).  However, that is not true because a user can reduce the
logical_decoding_work_mem to a smaller value before the most recent
change.

We fix it by allowing to evict the transactions until we reach under the
memory limit.

Reported-by: Fujii Masao
Author: Amit Kapila
Reviewed-by: Fujii Masao
Backpatch-through: 13, where it was introduced
Discussion: https://postgr.es/m/2b7ba291-22e0-a187-d167-9e5309a3458d@oss.nttdata.com
src/backend/replication/logical/reorderbuffer.c