Re: 2pc leaks fds
Alvaro Herrera <alvherre@2ndquadrant.com>
From: Alvaro Herrera <alvherre@2ndquadrant.com>
To: Antonin Houska <ah@cybertec.at>
Cc: Andres Freund <andres@anarazel.de>, Michael Paquier <michael@paquier.xyz>, pgsql-hackers@postgresql.org
Date: 2020-04-22T17:57:54Z
Lists: pgsql-hackers
Concretely, I propose to have a new struct like
typedef struct xlogReaderFuncs
{
XLogPageReadCB read_page;
XLogSegmentOpenCB open_segment;
XLogSegmentCloseCB open_segment;
} xlogReaderFuncs;
#define XLOGREADER_FUNCS(...) &(xlogReaderFuncs){__VA_ARGS__}
and then invoke it something like
xlogreader = XLogReaderAllocate(wal_segment_size, NULL,
XLOGREADER_FUNCS(.readpage = &read_local_xlog_page,
.opensegment = &wal_segment_open),
.closesegment = &wal_segment_close),
NULL);
(with suitable definitions for XLogSegmentOpenCB etc) so that the
support functions are all available at the xlogreader level, instead of
"open" being buried at the read-page level. Any additional support
functions can be added easily.
This would give xlogreader a simpler interface.
If people like this, I could make this change for pg13 and avoid
changing the API again in pg14.
Thougths?
--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Fix obsolete references to "XLogRead"
- a8be5364ac16 13.0 landed
-
Rework XLogReader callback system
- b060dbe0001a 13.0 landed
-
Fix XLogReader FD leak that makes backends unusable after 2PC usage.
- 91c40548d5f7 13.0 landed
-
Refactor WAL file-reading code into WALRead()
- 0dc8ead46363 13.0 cited
-
Add ArchiveOpts to pass options to ArchiveEntry
- f831d4accda0 12.0 cited