1
0
mirror of https://github.com/pgbackrest/pgbackrest.git synced 2025-06-18 23:57:33 +02:00

Fix incorrect offline upper bound for ignoring page checksum errors.

For offline backups the upper bound was being set to 0x0000FFFF0000FFFF rather than UINT64_MAX.  This meant that page checksum errors might be ignored for databases with a lot of past WAL in offline mode.

Online mode is not affected since the upper bound is retrieved from pg_start_backup().
This commit is contained in:
David Steele
2019-07-11 09:13:56 -04:00
parent 2fd0ebb78a
commit e10577d0b0
5 changed files with 142 additions and 142 deletions

View File

@ -184,10 +184,10 @@ sub run
pageBuild($tBasePage, 0) .
pageBuild($tBasePage, 1) .
pageBuild($tBasePage, 2) .
pageBuild($tBasePage, 0, 0xFFFF, 0xFFFF);
pageBuild($tBasePage, 0, 0xFFFFFFFF, 0xFFFFFFFF);
$oHostDbMaster->manifestFileCreate(
\%oManifest, MANIFEST_TARGET_PGDATA, 'base/32768/33000', $tPageValid, '4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f',
\%oManifest, MANIFEST_TARGET_PGDATA, 'base/32768/33000', $tPageValid, '7a16d165e4775f7c92e8cdf60c0af57313f0bf90',
$lTime);
my $iBlockOffset = 32767 * 131072;
@ -196,11 +196,11 @@ sub run
pageBuild($tBasePage, $iBlockOffset + 0) .
pageBuild($tBasePage, $iBlockOffset + 1) .
("\0" x 8192) .
pageBuild($tBasePage, 0, 0xFFFF, 0xFFFF);
pageBuild($tBasePage, 0, 0xFFFFFFFF, 0xFFFFFFFF);
$oHostDbMaster->manifestFileCreate(
\%oManifest, MANIFEST_TARGET_PGDATA, 'base/32768/33000.32767', $tPageValidSeg32767,
'21e2c7c1a326682c07053b7d6a5a40dbd49c2ec5', $lTime);
'6e99b589e550e68e934fd235ccba59fe5b592a9e', $lTime);
my $tPageInvalid33001 =
pageBuild($tBasePage, 1) .
@ -282,7 +282,7 @@ sub run
# Unlog and temp files to ignore (unlog _init will NOT be ignored)
$oHostDbMaster->manifestFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'base/32768/44000_init', $tPageValid,
'4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f', $lTime);
'7a16d165e4775f7c92e8cdf60c0af57313f0bf90', $lTime);
$oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'base/32768/44000', 'IGNORE');
$oHostDbMaster->dbFileCreate(\%oManifest, MANIFEST_TARGET_PGDATA, 'base/32768/t333_44000', 'IGNORE');
@ -1311,7 +1311,7 @@ sub run
# Restore checksum values for next test
$oManifest{&MANIFEST_SECTION_TARGET_FILE}{'pg_data/base/32768/33000'}{&MANIFEST_SUBKEY_CHECKSUM} =
'4a383e4fb8b5cd2a4e8fab91ef63dce48e532a2f';
'7a16d165e4775f7c92e8cdf60c0af57313f0bf90';
$oManifest{&MANIFEST_SECTION_TARGET_FILE}{'pg_data/base/32768/33001'}{&MANIFEST_SUBKEY_CHECKSUM} =
'6bf316f11d28c28914ea9be92c00de9bea6d9a6b';
$oManifest{&MANIFEST_SECTION_TARGET_FILE}{'pg_tblspc/2/PG_9.4_201409291/32768/tablespace2.txt'}