Skip to content

Commit 15a5c5d

Browse files
committed
[PBCKP-354] Pg15: continue reading if error "missing contrecord" is met.
Pg15 now reports if it didn't met expected contrecord. Absence of this message was long standing bug in previous postgres versions. This situation could happen if WAL segment was rewritten after restart. It causes "tests.validate.ValidateTest.test_validate_wal_unreal_values" to hang but (looks like) for other reason: test tries to read "in future". Probably we should stop reading logs here. But since we always did continue here, lets continue as well.
1 parent 8f20e7e commit 15a5c5d

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

src/parsexlog.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1443,7 +1443,14 @@ XLogThreadWorker(void *arg)
14431443
* Usually SimpleXLogPageRead() does it by itself. But here we need
14441444
* to do it manually to support threads.
14451445
*/
1446-
if (reader_data->need_switch && errormsg == NULL)
1446+
if (reader_data->need_switch && (
1447+
errormsg == NULL ||
1448+
/*
1449+
* Pg15 now informs if "contrecord" is missing.
1450+
* TODO: probably we should abort reading logs at this moment.
1451+
* But we continue as we did with bug present in Pg < 15.
1452+
*/
1453+
strncmp(errormsg, "missing contrecord", 18) == 0))
14471454
{
14481455
if (SwitchThreadToNextWal(xlogreader, thread_arg))
14491456
continue;

0 commit comments

Comments
 (0)