diff options
author | Noah Misch | 2023-10-01 19:20:55 +0000 |
---|---|---|
committer | Noah Misch | 2023-10-01 19:20:55 +0000 |
commit | e1f95ec8cf6ea75d90905b2c746e2e1e9f3c9fc1 (patch) | |
tree | aa7e4a2a68eec440cb7dc111db14e4a7608c147d | |
parent | 5b7b3824648d6324f649bc74713a6b35e53b91ac (diff) |
Correct assertion and comments about XLogRecordMaxSize.
The largest allocation, of xl_tot_len+8192, is in allocate_recordbuf().
Discussion: https://postgr.es/m/[email protected]
-rw-r--r-- | src/backend/access/transam/xloginsert.c | 9 | ||||
-rw-r--r-- | src/include/access/xlogrecord.h | 4 |
2 files changed, 7 insertions, 6 deletions
diff --git a/src/backend/access/transam/xloginsert.c b/src/backend/access/transam/xloginsert.c index 258cbd70355..588626424e6 100644 --- a/src/backend/access/transam/xloginsert.c +++ b/src/backend/access/transam/xloginsert.c @@ -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 diff --git a/src/include/access/xlogrecord.h b/src/include/access/xlogrecord.h index f355e08e1d3..ec9a3c802a3 100644 --- a/src/include/access/xlogrecord.h +++ b/src/include/access/xlogrecord.h @@ -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) |