Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit e1f95ec

Browse files
committed
Correct assertion and comments about XLogRecordMaxSize.
The largest allocation, of xl_tot_len+8192, is in allocate_recordbuf(). Discussion: https://postgr.es/m/20230812211327.GB2326466@rfd.leadboat.com
1 parent 5b7b382 commit e1f95ec

File tree

2 files changed

+7
-6
lines changed

2 files changed

+7
-6
lines changed

src/backend/access/transam/xloginsert.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -897,8 +897,7 @@ XLogRecordAssemble(RmgrId rmid, uint8 info,
897897
*
898898
* XLogReader machinery is only able to handle records up to a certain
899899
* size (ignoring machine resource limitations), so make sure that we will
900-
* not emit records larger than the sizes advertised to be supported. This
901-
* cap is based on DecodeXLogRecordRequiredSpace().
900+
* not emit records larger than the sizes advertised to be supported.
902901
*/
903902
if (total_len > XLogRecordMaxSize)
904903
ereport(ERROR,
@@ -1339,10 +1338,12 @@ InitXLogInsert(void)
13391338

13401339
/*
13411340
* Check that any records assembled can be decoded. This is capped based
1342-
* on what XLogReader would require at its maximum bound. This code path
1341+
* on what XLogReader would require at its maximum bound. The XLOG_BLCKSZ
1342+
* addend covers the larger allocate_recordbuf() demand. This code path
13431343
* is called once per backend, more than enough for this check.
13441344
*/
1345-
size_t max_required = DecodeXLogRecordRequiredSpace(XLogRecordMaxSize);
1345+
size_t max_required =
1346+
DecodeXLogRecordRequiredSpace(XLogRecordMaxSize + XLOG_BLCKSZ);
13461347

13471348
Assert(AllocSizeIsValid(max_required));
13481349
#endif

src/include/access/xlogrecord.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ typedef struct XLogRecord
6868
* in length if we ignore any allocation overhead of the XLogReader.
6969
*
7070
* To accommodate some overhead, this value allows for 4M of allocation
71-
* overhead, that should be plenty enough for what
72-
* DecodeXLogRecordRequiredSpace() expects as extra.
71+
* overhead, that should be plenty enough for what the XLogReader
72+
* infrastructure expects as extra.
7373
*/
7474
#define XLogRecordMaxSize (1020 * 1024 * 1024)
7575

0 commit comments

Comments
 (0)