Обсуждение: [PATCH] Perform check for oversized WAL record before calculating record CRC

Поиск
Список
Период
Сортировка

[PATCH] Perform check for oversized WAL record before calculating record CRC

От
Sergey Fukanchik
Дата:
Hi Postgres hackers,
I found a case where CRC of 1Gb block is calculated first and then 
immediately
discarded.

There is a limit on WAL record size - XLogRecordMaxSize. If the record
being inserted is larger than that, it is discarded and error is reported:

ERROR:  oversized WAL record
DETAIL:  WAL record would be 1069547521 bytes (of maximum 1069547520 bytes)

However, crc of record data is calculated before the record size is 
validated,
and in case of oversized record this crc is not used anywhere.

It is surely a minor issue, but might be worth fixing. I'm proposing a 
patch.
Since this situation is not covered by any tests I also included a test case
for failing on huge WAL records.
---
Sergey Fukanchik

Вложения

Re: [PATCH] Perform check for oversized WAL record before calculating record CRC

От
Andrey Borodin
Дата:

> On 6 Sep 2025, at 16:00, Sergey Fukanchik <s.fukanchik@postgrespro.ru> wrote:
>
> <0001-Perform-check-for-oversized-WAL-record-before-calcul.patch>

Hi Sergey!

It seems to me reasonable to move size check above CRC computation. However, it seems suspicious to me to run a test
thatallocates 1Gb in `make check`. Maybe, there are places that are not exercised too often. Perhaps recovery tests or
somethinglike that. 


Best regards, Andrey Borodin.


Re: [PATCH] Perform check for oversized WAL record before calculating record CRC

От
Sergey Fukanchik
Дата:
> It seems to me reasonable to move size check above CRC computation. However, it seems suspicious to me to run a test
thatallocates 1Gb in `make check`. Maybe, there are places that are not exercised too often. Perhaps recovery tests or
somethinglike that.
 

Hi Andrey,

I share your concern about memory consumption and also agree recovery 
tests look like the right place for this test.

So I split the patch into two - the change proper and the converted TAP 
test, guarded by PG_TEST_EXTRA. Attaching both patches.

---

Sergey

Вложения