David Steele
6ef2167e97
Fixed an issue retrieving WAL for old database versions.
...
After a stanza-upgrade it should still be possible to restore backups from the previous version and perform recovery with archive-get. However, archive-get only checked the most recent db version/id and failed.
Also clean up some issues when the same db version/id appears multiple times in the history.
Fixed by Cynthia Shang.
Reported by Clinton Adams.
2017-11-16 17:18:51 -05:00
David Steele
1cb11a582d
Fix flapping protocol timeout test.
...
It only matters that the correct error code is returned, so disable logging to prevent message ordering from failing the expect test.
2017-11-15 13:17:57 -05:00
David Steele
22fe684b1f
Only check expect logs on CentOS 7.
...
Variations in distros cause false negatives in tests but don't add much value.
2017-11-14 17:16:39 -05:00
David Steele
b8746f368d
Inflate performance improvement for gzip filter and full unit test coverage.
2017-11-14 15:12:31 -05:00
David Steele
04e55fe71b
Fixed an issue that could cause copying large manifests to fail during restore.
...
Reported by Craig A. James.
2017-11-14 14:48:44 -05:00
David Steele
bcdfc7d0b5
Enable additional warnings for C builds.
2017-11-06 22:55:34 -05:00
Cynthia Shang
b03c26968a
Repository encryption support.
...
Contributed by Cynthia Shang.
2017-11-06 12:51:12 -05:00
David Steele
8d6a08a32b
Library code for repository encryption support.
2017-11-03 13:57:58 -04:00
David Steele
ac542788da
Convert configuration definitions from auto-generated functions to auto-generated data structures.
2017-11-02 08:14:13 -04:00
David Steele
f57e376c44
Update Debian/Ubuntu containers to download lastest version of pip.
2017-10-30 09:29:46 -04:00
David Steele
d989cf8ac2
Replace dynamically built class hierarchies in I/O layer with fixed parent() calls.
2017-10-22 19:07:17 -04:00
David Steele
d82fe88031
Fix custom settings for compress-level option being ignored.
...
Reported by Jens Wilke.
2017-10-22 18:05:46 -04:00
David Steele
3553ccae44
Add I/O performance tests.
2017-10-22 13:27:47 -04:00
David Steele
e1cb9ae86a
Improve labeling for errors in helper processes.
2017-10-21 14:40:14 -04:00
David Steele
f4524aeaa9
Add base64 encode/decode.
2017-10-18 11:14:26 -04:00
David Steele
b1efd598cf
Add PostgreSQL versions to Debian VMs for testing.
2017-10-16 18:21:47 -04:00
David Steele
c94e52f697
Remove error when overlapping timelines are detected.
...
Overlapping timelines are valid in many Point-in-Time-Recovery (PITR) scenarios.
Reported by blogh.
2017-10-16 14:34:44 -04:00
David Steele
583a76f605
Add C memory contexts.
2017-10-16 11:25:49 -04:00
David Steele
6f5186f9e6
Convert config tests into C unit tests.
2017-10-16 11:13:51 -04:00
David Steele
9d78948a14
Improvements to page checksum module and tests:
...
* Page checksum module uses new C error handler.
* Convert page checksum tests into C unit tests.
2017-10-16 11:03:06 -04:00
David Steele
904b83747c
Perl error handler recognizes errors thrown from the C library.
2017-10-16 10:47:31 -04:00
David Steele
f1e739b4aa
Add C error handler.
...
Basic try ... catch ... finally pattern to simplify error handling in C.
2017-10-16 10:09:56 -04:00
David Steele
10dfbd90b5
Add C unit test infrastructure.
2017-10-12 12:55:48 -04:00
David Steele
abea4d1fd5
Remove Debian test repo after PostgreSQL 10 release.
2017-10-05 12:33:13 -04:00
David Steele
266c9ddcc1
Fixed an issue where some db-* options (e.g. db-port) were not being passed to remotes.
2017-09-19 10:14:18 -04:00
David Steele
c857015a38
Fixed an issue where warnings were being emitted in place of lower priority log messages during backup from standby initialization.
2017-09-19 10:03:53 -04:00
David Steele
7c95a2f4de
Updates to installation documentation.
...
* Add trusted SSH configuration.
* Add full installation where required and remove doc containers that included parts of the installation.
2017-09-08 21:50:00 -07:00
David Steele
6343fdd584
Additional backup exclusions.
...
* Exclude contents of pg_snapshots, pg_serial, pg_notify, and pg_dynshmem from backup since they are rebuilt on startup.
* Exclude pg_internal.init files from backup since they are rebuilt on startup.
2017-09-04 08:26:57 -04:00
David Steele
eea2ccc3ab
Add HTTP retries to harden against transient S3 network errors.
2017-09-03 16:48:41 -04:00
David Steele
75511d2481
Allow content-length (in addition to chunked encoding) when reading XML data to improve compatibility with third-party S3 gateways.
...
Suggested by Victor Gdalevich.
2017-09-01 15:07:20 -04:00
David Steele
fcb7c6fd1d
PostgreSQL 10 support.
2017-09-01 12:29:34 -04:00
Cynthia Shang
36e576b483
Up to seven standbys can be configured for backup from standby.`
...
Contributed by Cynthia Shang.
2017-08-31 19:15:44 -04:00
David Steele
206415d4c7
Fixed an issue that could cause compression to abort on growing files.
...
Reported by Jesper St John, Aleksandr Rogozin.
2017-08-30 16:34:05 -04:00
David Steele
81ffd09445
Fixed an issue with keep-alives not being sent to the remote from the local process.
...
Reported by William Cox.
2017-08-30 08:41:46 -04:00
David Steele
1e0ed07455
Configuration rules are now pulled from the C library when present.
2017-08-25 16:47:47 -04:00
David Steele
8d3436bce7
Merge release 2 container build changes.
2017-08-19 09:02:24 -04:00
David Steele
7dab459cac
Simplified smart logic for C Library and package builds.
2017-08-19 08:48:13 -04:00
David Steele
4331e09376
Drain stderr during test process execution as well as termination to prevent lockups if there is a lot of output.
2017-08-11 18:31:25 -04:00
David Steele
ac1574448e
Changed log test order to ignore unimportant log errors while shutting down PostgreSQL.
2017-08-10 18:11:29 -04:00
David Steele
61c38f5808
Fixed authentication issue in S3 retry.
2017-08-09 11:27:09 -04:00
David Steele
038d47bcc0
Retry when S3 returns an internal error (500).
2017-08-08 17:15:01 -04:00
David Steele
961f7033d1
Generate global fake cert in containers for testing.
2017-08-08 16:26:44 -04:00
Cynthia Shang
b6da509c9f
Consolidate stanza-create and stanza-upgrade tests into new stanza test.
...
Contributed by Cynthia Shang.
2017-08-04 16:10:51 -04:00
Cynthia Shang
f9bdc092ba
Fixed an issue that could cause the empty archive directory for an old PostgreSQL version to be left behind after a stanza-upgrade.
...
Fixed by Cynthia Shang.
2017-08-04 16:03:55 -04:00
Cynthia Shang
ce2b18c5b8
Added --backup-ssh-port and --db-ssh-port options to support non-default SSH ports.
...
Contributed by Cynthia Shang.
2017-08-01 10:34:53 -04:00
David Steele
fa992433da
Update CI code to prevent deprecated VM from being rewritten.
2017-07-27 11:31:42 -04:00
David Steele
d5c1f02c72
Include archive_status directory in online backups.
...
The archive_status directory is now recreated on restore to support PostgreSQL 8.3 which does not recreate it automatically like more recent versions do.
Also fixed log checking after PostgreSQL shuts down to include FATAL messages and disallow immediate shutdowns which can throw FATAL errors in the log.
Reported by Stephen Frost.
2017-07-24 07:57:47 -04:00
Cynthia Shang
cda3b9821b
Improved WAL data returned by info command.
...
Modified the info command (both text and JSON output) to display the archive ID and minimum/maximum WAL currently present in the archive for the current and prior, if any, database cluster version.
Contributed by Cynthia Shang.
2017-07-21 17:32:41 -04:00
David Steele
7759a94fa2
Add Debian 9 to test suite.
2017-06-27 18:29:48 -04:00
David Steele
9e9286ee20
Add performance module and basic performance test for archive-push.
2017-06-27 18:00:39 -04:00
David Steele
2310e423e9
Fixed an issue that prevented tablespaces from being backed up on PostgreSQL ≤ 8.4.
...
The integration tests that were supposed to prevent this regression did not work as intended. They verified the contents of a table in the (supposedly) restored tablespace, deleted the table, and then deleted the tablespace. All of this was deemed sufficient to prove that the tablespace had been restored correctly and was valid.
However, PostgreSQL will happily recreate a tablespace on the basis of a single full-page write, at least in the affected versions. Since writes to the test table were replayed from WAL with each recovery, all the tests passed even though the tablespace was missing after the restore.
The tests have been updated to include direct comparisons against the file system and a new table that is not replayed after a restore because it is created before the backup and never modified again.
Versions ≥ 9.0 were not affected due to numerous synthetic integration tests that verify backups and restores file by file.
2017-06-27 16:47:40 -04:00
David Steele
fdabf33604
Revert removal of Ubuntu 12.04 and PostgreSQL 8.3.
2017-06-27 15:58:02 -04:00
David Steele
001cff9eb9
Automatically check that all supported PostgreSQL versions are being tested on a single default VM.
2017-06-27 15:48:34 -04:00
David Steele
7a1385cc27
Add documentation builds to CI.
2017-06-24 18:04:02 -04:00
David Steele
7a9b1f6993
Container build improvements:
...
* More optimized container suite that greatly improves build time.
* Added static Debian packages for Devel::Cover to reduce build time.
* Add deprecated state for containers. Deprecated containers may only be used to build packages.
* Remove Debian 8 from CI because it does not provide additional coverage over Ubuntu 14.04 and Ubuntu 16.04.
2017-06-24 10:59:00 -04:00
David Steele
a10a22127d
Consolidate archive-get test into new archive test.
2017-06-22 18:51:39 -04:00
David Steele
918c1c6f49
Add s3-repo-ca-path and s3-repo-ca-file options.
...
The options accommodate systems where CAs are not automatically found by IO::Socket::SSL, i.e. RHEL7, or to load custom CAs.
Suggested by Scott Frazer.
2017-06-22 18:22:49 -04:00
David Steele
6327799c9a
Use old trusty image until new image works with RHEL6.
2017-06-22 18:13:59 -04:00
David Steele
a1a5d18aa4
Balance database versions between VMs to minimize test duration.
2017-06-22 14:44:21 -04:00
David Steele
8b9965abcb
Remove process-max option.
...
Parallelism is now tested in a more targeted manner and the high level option is no longer needed.
2017-06-21 19:21:16 -04:00
David Steele
2348693389
Reduce process redundancy in mock tests.
2017-06-21 18:47:25 -04:00
David Steele
cc0e3f843e
Remove support for PostgreSQL 8.3.
2017-06-21 17:24:36 -04:00
David Steele
73274fc608
Remove Ubuntu 12.04 from CI now that it is EOL (it can still be run manually).
2017-06-21 17:02:01 -04:00
David Steele
c69baa2de1
Install sudo in base containers rather than on demand.
2017-06-21 16:51:41 -04:00
David Steele
64ec7eb490
Eliminate redundancy in real tests.
2017-06-21 16:07:13 -04:00
David Steele
edada21866
Rename archive-push unit test.
...
This is part of the archive consolidation but is committed separately so that git will follow the rename.
2017-06-21 08:45:58 -04:00
David Steele
2337be8636
Consolidate archive-push tests into new archive test.
2017-06-21 08:38:53 -04:00
David Steele
11ee528e0e
Rename Archive modules to remove redundancy.
2017-06-21 08:02:21 -04:00
David Steele
692b1e274a
Split full module into mock and real to allow better test combinations and save time in CI.
2017-06-19 18:55:00 -04:00
David Steele
f6d4457d58
Full/Synthetic test refactor.
...
* Combine hardlink and non/compressed in synthetic tests to reduce test time and improve coverage.
* Change log level of hardlink logging to detail.
* Cast size in S3 manifest to integer.
2017-06-15 15:32:10 -04:00
David Steele
269ae4556d
Fix timeouts in ExecuteTest to speed multi-process testing.
2017-06-15 15:20:02 -04:00
David Steele
051c961151
S3 repository support.
2017-06-12 10:52:32 -04:00
David Steele
de7fc37f88
Storage and IO layer refactor:
...
Refactor storage layer to allow for new repository filesystems using drivers. (Reviewed by Cynthia Shang.)
Refactor IO layer to allow for new compression formats, checksum types, and other capabilities using filters. (Reviewed by Cynthia Shang.)
2017-06-09 17:51:41 -04:00
Cynthia Shang
7e982f05f5
Fixed config warnings raised from a remote process causing errors in the master process.
...
Fixed by Cynthia Shang.
2017-05-16 11:28:51 -04:00
David Steele
5296747271
Move backup modules into Backup directory.
2017-05-15 16:01:00 -04:00
David Steele
2a23157bf2
Move modules in Protocol directory in subdirectories.
2017-05-15 11:12:14 -04:00
David Steele
33c87b2a1c
Remove flapping protocol timeout test that will be replaced in the upcoming storage patch.
2017-05-15 10:24:46 -04:00
David Steele
c31da3f961
Moved test and env modules to new directories to avoid namespace conflicts with common tests.
2017-05-12 16:43:04 -04:00
David Steele
4049d59c9e
Fixed issue with --dry-run requiring --vm-out to work properly.
2017-05-12 16:27:06 -04:00
Cynthia Shang
7d0c50fcd6
Fixed the backup command so the backup-standby option is reset (and the backup proceeds on the master) if the standby is not configured and/or reachable.
...
Fixed by Cynthia Shang.
2017-05-12 16:05:44 -04:00
Cynthia Shang
5bf4f52e3d
Fixed the info command so the WAL archive min/max displayed is for the current database version.
...
Fixed by Cynthia Shang.
2017-05-12 15:49:14 -04:00
David Steele
979610a07d
Fixed an undefined variable when a module had no uncoverable code exceptions.
2017-04-13 20:10:28 -04:00
David Steele
77ef4fde20
Set --vm-max=2 for CI.
2017-04-13 07:42:45 -04:00
David Steele
f5f8d51366
Improved error message when the restore command detects the presence of postmaster.pid.
...
Suggested by Yogesh Sharma.
2017-04-12 09:53:07 -04:00
Cynthia Shang
21a000d002
Silence some perl critic warnings.
...
* Variables::RequireNegativeIndice
* Variables::ProhibitUnusedVariables
* Variables::ProhibitAugmentedAssignmentInDeclaration
* Modules::ProhibitConditionalUseStatements
2017-04-10 17:23:39 -04:00
Cynthia Shang
b63ede5614
Added ability to test warning messages.
...
Contributed by Cynthia Shang.
2017-04-10 13:53:19 -04:00
David Steele
3d84f2ce5e
Improvements to Ini.pm.
...
* Refactor Ini.pm to facilitate testing.
* Complete statement/branch coverage for Ini.pm.
* Improved functions used to test/munge manifest and info files.
2017-04-10 13:24:45 -04:00
David Steele
367e06f4be
Coverage testing always enabled on Debian-based containers.
...
* Full coverage is verified when specified.
* Modules marked with partial coverage will error if they are actually fully covered.
* Simplified test representation is DefineTest.
* Added new representation for queries in DefineTest and added API functions.
* Update modules using DefineTest to use new API.
2017-04-10 12:31:30 -04:00
David Steele
eb4918d018
Fixed locking bug and refactoring.
...
* Fixed an issue where read-only operations that used local worker processes (i.e. restore) were creating write locks that could interfere with parallel archive-push. (Reported by Jens Wilke.)
* Simplify locking scheme. Now, only the master process will hold write locks (archive-push, backup) and not all the local and remote worker processes as before.
2017-04-07 10:31:49 -04:00
Cynthia Shang
b620e6b282
Improvements and additional tests for stanza-upgrade.
...
Contributed by Cynthia Shang.
2017-04-06 19:36:37 -04:00
David Steele
0da216c034
Require description in every call to testResult() and make iWaitSeconds optional.
2017-04-05 10:50:32 -04:00
David Steele
c7b61a2002
Refactor backupLabel() and add unit tests.
2017-04-05 10:16:16 -04:00
David Steele
b2f43b5601
Allow functions to accept optional parameters as a hash.
...
Refactor File->list() and fileList() to accept optional parameters.
2017-04-04 21:17:19 -04:00
David Steele
9eae36a702
Fixed flapping archive stop tests.
2017-04-04 21:15:22 -04:00
Cynthia Shang
beead043ac
Added stanza-upgrade command.
...
The stanza-upgrade command provides a mechanism for upgrading a stanza after upgrading to a new major version of PostgreSQL.
Contributed by Cynthia Shang.
2017-04-03 10:42:55 -04:00
Cynthia Shang
af7e4f4b4b
Added validation of pgbackrest.conf to display warnings if options are not valid or are not in the correct section.
...
Contributed by Cynthia Shang.
2017-03-22 19:03:28 -04:00
David Steele
b0947fdaa8
Fixed an issue where newly initialized (but unused) pages would cause page checksum warnings.
...
Reported by Stephen Frost.
2017-03-13 15:50:13 -04:00
David Steele
02730526fc
Fixed an issue where databases created with a non-default tablespace would raise bogus warnings about pg_filenode.map and pg_internal.init not being page aligned.
...
Reported by blogh.
2017-03-02 13:50:29 -05:00
David Steele
5957f8566f
Archive test improvements:
...
* Fixed flapping archive-stop test with testResult() retries.
* Added final test of archive contents to archive-push test.
2017-03-02 11:47:23 -05:00
David Steele
5eb585c9ba
Improved truncation when outputting errors logs in the ExecuteTest module.
2017-03-01 14:38:05 -05:00