Re: backup manifests

From: Amit Kapila <amit(dot)kapila16(at)gmail(dot)com>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Suraj Kharage <suraj(dot)kharage(at)enterprisedb(dot)com>, tushar <tushar(dot)ahuja(at)enterprisedb(dot)com>, Rajkumar Raghuwanshi <rajkumar(dot)raghuwanshi(at)enterprisedb(dot)com>, Rushabh Lathia <rushabh(dot)lathia(at)gmail(dot)com>, Tels <nospam-pg-abuse(at)bloodgate(dot)com>, David Steele <david(at)pgmasters(dot)net>, Andrew Dunstan <andrew(dot)dunstan(at)2ndquadrant(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>, Jeevan Chalke <jeevan(dot)chalke(at)enterprisedb(dot)com>, vignesh C <vignesh21(at)gmail(dot)com>
Subject: Re: backup manifests
Date: 2020-03-21 12:26:53
Message-ID: CAA4eK1K0bRCeds25pw_Wt+AG-vOoEL+6_8pjKaq3g2QthNmiag@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sat, Mar 21, 2020 at 4:00 AM Robert Haas <robertmhaas(at)gmail(dot)com> wrote:
>
> On Mon, Mar 16, 2020 at 2:03 AM Suraj Kharage
> <suraj(dot)kharage(at)enterprisedb(dot)com> wrote:
> > One more suggestion, recent commit (1933ae62) has added the PostgreSQL home page to --help output.
>
> Good catch. Fixed. I also attempted to address the compiler warning
> you mentioned in your other email.
>
> Also, I realized that the previous patch versions didn't handle the
> hex-encoded path format that we need to use for non-UTF8 filenames,
> and that there was no easy way to test that format. So, in this
> version I added an option to force all pathnames to be encoded in that
> format. I also made that option capable of suppressing the backup
> manifest altogether. Other than that, this version is pretty much the
> same as the last version, except for a few additional test cases which
> I added to get the code coverage up even a little more. It would be
> nice if someone could test whether the tests pass on Windows.
>

On my CentOS, the patch gives below compilation failure:
pg_validatebackup.c: In function ‘parse_manifest_file’:
pg_validatebackup.c:335:19: error: assignment left-hand side might be
a candidate for a format attribute [-Werror=suggest-attribute=format]
context.error_cb = report_manifest_error;

I have tested it on Windows and found there are multiple failures.
The failures are as below:
Test Summary Report
---------------------------------------
t/002_algorithm.pl (Wstat: 512 Tests: 5 Failed: 4)
Failed tests: 2-5
Non-zero exit status: 2
Parse errors: Bad plan. You planned 19 tests but ran 5.
t/003_corruption.pl (Wstat: 256 Tests: 14 Failed: 7)
Failed tests: 2, 4, 6, 8, 10, 12, 14
Non-zero exit status: 1
Parse errors: Bad plan. You planned 44 tests but ran 14.
t/004_options.pl (Wstat: 4352 Tests: 25 Failed: 17)
Failed tests: 2, 4, 6-12, 14-17, 19-20, 22, 25
Non-zero exit status: 17
t/005_bad_manifest.pl (Wstat: 1792 Tests: 44 Failed: 7)
Failed tests: 18, 24, 26, 30, 32, 34, 36
Non-zero exit status: 7
Files=6, Tests=109, 72 wallclock secs ( 0.05 usr + 0.01 sys = 0.06 CPU)
Result: FAIL

Failure Report
------------------------
t/002_algorithm.pl ..... 1/19
# Failed test 'backup ok with algorithm "none"'
# at t/002_algorithm.pl line 33.

# Failed test 'backup manifest exists'
# at t/002_algorithm.pl line 39.

t/002_algorithm.pl ..... 4/19 # Failed test 'validate backup with
algorithm "none"'
# at t/002_algorithm.pl line 53.

# Failed test 'backup ok with algorithm "crc32c"'
# at t/002_algorithm.pl line 33.
# Looks like you planned 19 tests but ran 5.
# Looks like you failed 4 tests of 5 run.
# Looks like your test exited with 2 just after 5.
t/002_algorithm.pl ..... Dubious, test returned 2 (wstat 512, 0x200)
Failed 18/19 subtests
t/003_corruption.pl .... 1/44
# Failed test 'intact backup validated'
# at t/003_corruption.pl line 110.

# Failed test 'corrupt backup fails validation: extra_file: matches'
# at t/003_corruption.pl line 117.
# 'pg_validatebackup: fatal: could not parse backup
manifest: both pathname and encoded pathname
# '
# doesn't match '(?^:extra_file.*present on disk but not in the manifest)'
t/003_corruption.pl .... 5/44
# Failed test 'intact backup validated'
# at t/003_corruption.pl line 110.
t/003_corruption.pl .... 7/44
# Failed test 'corrupt backup fails validation:
extra_tablespace_file: matches'
# at t/003_corruption.pl line 117.
# 'pg_validatebackup: fatal: could not parse backup
manifest: both pathname and encoded pathname
# '
# doesn't match '(?^:extra_ts_file.*present on disk but not in the
manifest)'
t/003_corruption.pl .... 9/44
# Failed test 'intact backup validated'
# at t/003_corruption.pl line 110.

# Failed test 'corrupt backup fails validation: missing_file: matches'
# at t/003_corruption.pl line 117.
# 'pg_validatebackup: fatal: could not parse backup
manifest: both pathname and encoded pathname
# '
# doesn't match '(?^:pg_xact/0000.*present in the manifest but not on disk)'
t/003_corruption.pl .... 13/44
# Failed test 'intact backup validated'
# at t/003_corruption.pl line 110.
# Looks like you planned 44 tests but ran 14.
# Looks like you failed 7 tests of 14 run.
# Looks like your test exited with 1 just after 14.
t/003_corruption.pl .... Dubious, test returned 1 (wstat 256, 0x100)
Failed 37/44 subtests
t/004_options.pl ....... 1/25
# Failed test '-q succeeds: exit code 0'
# at t/004_options.pl line 25.

# Failed test '-q succeeds: no stderr'
# at t/004_options.pl line 27.
# got: 'pg_validatebackup: fatal: could not parse backup
manifest: both pathname and encoded pathname
# '
# expected: ''

# Failed test '-q checksum mismatch: matches'
# at t/004_options.pl line 37.
# 'pg_validatebackup: fatal: could not parse backup
manifest: both pathname and encoded pathname
# '
# doesn't match '(?^:checksum mismatch for file \"PG_VERSION\")'
t/004_options.pl ....... 7/25
# Failed test '-s skips checksumming: exit code 0'
# at t/004_options.pl line 43.

# Failed test '-s skips checksumming: no stderr'
# at t/004_options.pl line 43.
# got: 'pg_validatebackup: fatal: could not parse backup
manifest: both pathname and encoded pathname
# '
# expected: ''

# Failed test '-s skips checksumming: matches'
# at t/004_options.pl line 43.
# ''
# doesn't match '(?^:backup successfully verified)'

# Failed test '-i ignores problem file: exit code 0'
# at t/004_options.pl line 48.

# Failed test '-i ignores problem file: no stderr'
# at t/004_options.pl line 48.
# got: 'pg_validatebackup: fatal: could not parse backup
manifest: both pathname and encoded pathname
# '
# expected: ''

# Failed test '-i ignores problem file: matches'
# at t/004_options.pl line 48.
# ''
# doesn't match '(?^:backup successfully verified)'

# Failed test '-i does not ignore all problems: matches'
# at t/004_options.pl line 57.
# 'pg_validatebackup: fatal: could not parse backup
manifest: both pathname and encoded pathname
# '
# doesn't match '(?^:pg_xact.*is present in the manifest but not on disk)'

# Failed test 'multiple -i options work: exit code 0'
# at t/004_options.pl line 62.

# Failed test 'multiple -i options work: no stderr'
# at t/004_options.pl line 62.
# got: 'pg_validatebackup: fatal: could not parse backup
manifest: both pathname and encoded pathname
# '
# expected: ''

# Failed test 'multiple -i options work: matches'
# at t/004_options.pl line 62.
# ''
# doesn't match '(?^:backup successfully verified)'

# Failed test 'multiple problems: missing files reported'
# at t/004_options.pl line 71.
# 'pg_validatebackup: fatal: could not parse backup
manifest: both pathname and encoded pathname
# '
# doesn't match '(?^:pg_xact.*is present in the manifest but not on disk)'

# Failed test 'multiple problems: checksum mismatch reported'
# at t/004_options.pl line 73.
# 'pg_validatebackup: fatal: could not parse backup
manifest: both pathname and encoded pathname
# '
# doesn't match '(?^:checksum mismatch for file \"PG_VERSION\")'

# Failed test '-e reports 1 error: missing files reported'
# at t/004_options.pl line 80.
# 'pg_validatebackup: fatal: could not parse backup
manifest: both pathname and encoded pathname
# '
# doesn't match '(?^:pg_xact.*is present in the manifest but not on disk)'

# Failed test 'nonexistent backup directory: matches'
# at t/004_options.pl line 86.
# 'pg_validatebackup: fatal: could not parse backup
manifest: both pathname and encoded pathname
# '
# doesn't match '(?^:could not open directory)'
# Looks like you failed 17 tests of 25.
t/004_options.pl ....... Dubious, test returned 17 (wstat 4352, 0x1100)
Failed 17/25 subtests
t/005_bad_manifest.pl .. 1/44
# Failed test 'missing pathname: matches'
# at t/005_bad_manifest.pl line 156.
# 'pg_validatebackup: fatal: could not parse backup
manifest: missing size
# '
# doesn't match '(?^:could not parse backup manifest: missing pathname)'

# Failed test 'missing size: matches'
# at t/005_bad_manifest.pl line 156.
# 'pg_validatebackup: fatal: could not parse backup
manifest: both pathname and encoded pathname
# '
# doesn't match '(?^:could not parse backup manifest: missing size)'

# Failed test 'file size is not an integer: matches'
# at t/005_bad_manifest.pl line 156.
# 'pg_validatebackup: fatal: could not parse backup
manifest: both pathname and encoded pathname
# '
# doesn't match '(?^:could not parse backup manifest: file size is
not an integer)'

# Failed test 'duplicate pathname in backup manifest: matches'
# at t/005_bad_manifest.pl line 156.
# 'pg_validatebackup: fatal: could not parse backup
manifest: both pathname and encoded pathname
# '
# doesn't match '(?^:fatal: duplicate pathname in backup manifest)'
t/005_bad_manifest.pl .. 31/44
# Failed test 'checksum without algorithm: matches'
# at t/005_bad_manifest.pl line 156.
# 'pg_validatebackup: fatal: could not parse backup
manifest: both pathname and encoded pathname
# '
# doesn't match '(?^:could not parse backup manifest: checksum
without algorithm)'

# Failed test 'unrecognized checksum algorithm: matches'
# at t/005_bad_manifest.pl line 156.
# 'pg_validatebackup: fatal: could not parse backup
manifest: both pathname and encoded pathname
# '
# doesn't match '(?^:fatal: unrecognized checksum algorithm)'

# Failed test 'invalid checksum for file: matches'
# at t/005_bad_manifest.pl line 156.
# 'pg_validatebackup: fatal: could not parse backup
manifest: both pathname and encoded pathname
# '
# doesn't match '(?^:fatal: invalid checksum for file)'
# Looks like you failed 7 tests of 44.
t/005_bad_manifest.pl .. Dubious, test returned 7 (wstat 1792, 0x700)
Failed 7/44 subtests

--
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andrew Dunstan 2020-03-21 13:15:53 Re: ssl passphrase callback
Previous Message Kartyshov Ivan 2020-03-21 11:16:11 Re: [HACKERS] make async slave to wait for lsn to be replayed