Fix running out of file descriptors for spill files.
authorAmit Kapila <akapila@postgresql.org>
Sat, 14 Dec 2019 06:11:37 +0000 (11:41 +0530)
committerAmit Kapila <akapila@postgresql.org>
Thu, 2 Jan 2020 06:11:04 +0000 (11:41 +0530)
commitd207038053837ae9365df2776371632387f6f655
treed02475ff299a581e1828d0f2c43a4bcff8d627a2
parent4b25f5d0ba0197af80e3af0de7441ca9c88c1e24
Fix running out of file descriptors for spill files.

Currently while decoding changes, if the number of changes exceeds a
certain threshold, we spill those to disk.  And this happens for each
(sub)transaction.  Now, while reading all these files, we don't close them
until we read all the files.  While reading these files, if the number of
such files exceeds the maximum number of file descriptors, the operation
errors out.

Use PathNameOpenFile interface to open these files as that internally has
the mechanism to release kernel FDs as needed to get us under the
max_safe_fds limit.

Reported-by: Amit Khandekar
Author: Amit Khandekar
Reviewed-by: Amit Kapila
Backpatch-through: 9.4
Discussion: https://postgr.es/m/CAJ3gD9c-sECEn79zXw4yBnBdOttacoE-6gAyP0oy60nfs_sabQ@mail.gmail.com
src/backend/replication/logical/reorderbuffer.c
src/test/recovery/t/006_logical_decoding.pl