Re: logical decoding : exceeded maxAllocatedDescs for .spill files
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Tom Lane <tgl@sss.pgh.pa.us>, Thomas Munro <thomas.munro@gmail.com>
Cc: Amit Khandekar <amitdkhan.pg@gmail.com>, Robert Haas <robertmhaas@gmail.com>, Tomas Vondra <tomas.vondra@2ndquadrant.com>, Alvaro Herrera from 2ndQuadrant <alvherre@alvh.no-ip.org>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2019-09-17T15:49:21Z
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
Hi, On 2019-09-14 14:34:21 -0400, Tom Lane wrote: > Amit Khandekar <amitdkhan.pg@gmail.com> writes: > > On Fri, 13 Sep 2019 at 22:01, Robert Haas <robertmhaas@gmail.com> wrote: > >> On Fri, Sep 13, 2019 at 12:14 PM Tom Lane <tgl@sss.pgh.pa.us> wrote: > >>> Again, though, the advice that's been given here is that we should > >>> fix logical decoding to use the VFD API as it stands, not change > >>> that API. I concur with that. > > >> A reasonable position. So I guess logical decoding has to track the > >> file position itself, but perhaps use the VFD layer for managing FD > >> pooling. > > > Yeah, something like the attached patch. I think this tracking of > > offsets would have been cleaner if we add in-built support in VFD. But > > yeah, for bank branches at least, we need to handle it outside of VFD. > > Or may be we would add it if we find one more use-case. > > Again, we had that and removed it, for what seem to me to be solid > reasons. It adds cycles when we're forced to close/reopen a file, > and it also adds failure modes that we could do without (ie, failure > of either the ftell or the lseek, which are particularly nasty because > they shouldn't happen according to the VFD abstraction). I do not > think there is going to be any argument strong enough to make us > put it back, especially not for non-mainstream callers like logical > decoding. Yea, I think that's the right call. Avoiding kernel seeks is quite worthwhile, and we shouldn't undo it just because of this usecase. And that'll become more and more important performance-wise (and has already done so, with all the intel fixes making syscalls much slower). I could see an argument for adding a separate generic layer providing position tracking ontop of the VFD abstraction however. Seems quite possible that there's some other parts of the system that could benefit from using VFDs rather than plain fds. And they'd probably also need the positional tracking. Greetings, Andres Freund