Re: logical decoding : exceeded maxAllocatedDescs for .spill files
Robert Haas <robertmhaas@gmail.com>
From: Robert Haas <robertmhaas@gmail.com>
To: Tomas Vondra <tomas.vondra@2ndquadrant.com>
Cc: Alvaro Herrera from 2ndQuadrant <alvherre@alvh.no-ip.org>,
Amit Khandekar <amitdkhan.pg@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2019-09-12T13:41:02Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
When a TAP file has non-zero exit status, retain temporary directories.
- 048c7ccd7d6d 9.6.17 landed
- d8efc5900f7c 10.12 landed
- 887657d183fc 11.7 landed
- 78a26c3edd85 12.2 landed
- bf989aaf3561 13.0 landed
-
Fix running out of file descriptors for spill files.
- 1ad47e8757bb 9.4.26 landed
- a6f4f407ada0 9.5.21 landed
- 27b5f48c79f7 10.12 landed
- 3e3a79735235 11.7 landed
- f8a6d8e71b17 12.2 landed
- d20703805383 13.0 landed
- ba5b4e506489 9.6.17 landed
-
Track statistics for spilling of changes from ReorderBuffer.
- 9290ad198b15 13.0 cited
-
Handle ReadFile() EOF correctly on Windows.
- 2189f49c420f 12.2 landed
- 6969deeb8d39 13.0 landed
-
Add logical_decoding_work_mem to limit ReorderBuffer memory usage.
- cec2edfa7859 13.0 cited
-
Generational memory allocator
- a4ccc1cef5a0 11.0 cited
-
Support retaining data dirs on successful TAP tests
- 90627cf98a8e 11.0 cited
On Thu, Sep 12, 2019 at 5:31 AM Tomas Vondra <tomas.vondra@2ndquadrant.com> wrote: > I don't see how the current API could do that transparently - it does > track the files, but the user only gets a file descriptor. With just a > file descriptor, how could the code know to do reopen/seek when it's going > just through the regular fopen/fclose? > > Anyway, I agree we need to do something, to fix this corner case (many > serialized in-progress transactions). ISTM we have two options - either do > something in the context of reorderbuffer.c, or extend the transient file > API somehow. I'd say the second option is the right thing going forward, > because it does allow doing it transparently and without leaking details > about maxAllocatedDescs etc. There are two issues, though - it does > require changes / extensions to the API, and it's not backpatchable. > > So maybe we should start with the localized fix in reorderbuffer, and I > agree tracking offset seems reasonable. We've already got code that knows how to track this sort of thing. You just need to go through the File abstraction (PathNameOpenFile or PathNameOpenFilePerm or OpenTemporaryFile) rather than using the functions that deal directly with fds (OpenTransientFile, BasicOpenFile, etc.). It seems like it would be better to reuse the existing VFD layer than to invent a whole new one specific to logical replication. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company