1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-26 01:22:12 +03:00

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
This commit is contained in:
Noah Misch
2023-10-01 12:20:55 -07:00
parent 5b7b382464
commit e1f95ec8cf
2 changed files with 7 additions and 6 deletions

View File

@ -897,8 +897,7 @@ XLogRecordAssemble(RmgrId rmid, uint8 info,
*
* XLogReader machinery is only able to handle records up to a certain
* size (ignoring machine resource limitations), so make sure that we will
* not emit records larger than the sizes advertised to be supported. This
* cap is based on DecodeXLogRecordRequiredSpace().
* not emit records larger than the sizes advertised to be supported.
*/
if (total_len > XLogRecordMaxSize)
ereport(ERROR,
@ -1339,10 +1338,12 @@ InitXLogInsert(void)
/*
* Check that any records assembled can be decoded. This is capped based
* on what XLogReader would require at its maximum bound. This code path
* on what XLogReader would require at its maximum bound. The XLOG_BLCKSZ
* addend covers the larger allocate_recordbuf() demand. This code path
* is called once per backend, more than enough for this check.
*/
size_t max_required = DecodeXLogRecordRequiredSpace(XLogRecordMaxSize);
size_t max_required =
DecodeXLogRecordRequiredSpace(XLogRecordMaxSize + XLOG_BLCKSZ);
Assert(AllocSizeIsValid(max_required));
#endif

View File

@ -68,8 +68,8 @@ typedef struct XLogRecord
* in length if we ignore any allocation overhead of the XLogReader.
*
* To accommodate some overhead, this value allows for 4M of allocation
* overhead, that should be plenty enough for what
* DecodeXLogRecordRequiredSpace() expects as extra.
* overhead, that should be plenty enough for what the XLogReader
* infrastructure expects as extra.
*/
#define XLogRecordMaxSize (1020 * 1024 * 1024)