pgBackRest 2.17 (upcoming) commit log

Add constants for path and archive.info/backup.info combinations.

commit   : cdb75ac8b38810e2e7c6f5d0161443650f94bb31    
  
author   : Cynthia Shang <cynthia.shang@crunchydata.com>    
date     : Mon, 15 Jul 2019 07:13:36 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Mon, 15 Jul 2019 07:13:36 -0400    

Click here for diff

Contributed by Cynthia Shang.  

M src/command/archive/get/file.c
M src/command/archive/push/push.c
M src/command/expire/expire.c
M src/info/infoArchive.c
M src/info/infoArchive.h
M src/info/infoBackup.c
M src/info/infoBackup.h

Allow NULL in JSON list.

commit   : ede7df9fb1d937f228e982d987d306345007dfe0    
  
author   : David Steele <david@pgmasters.net>    
date     : Sun, 14 Jul 2019 15:53:31 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Sun, 14 Jul 2019 15:53:31 -0400    

Click here for diff

M src/common/type/json.c
M test/src/module/common/typeJsonTest.c

Add lstClear() to List object.

commit   : c836c483dc7198a685991753300bae49d3caa73c    
  
author   : David Steele <david@pgmasters.net>    
date     : Sun, 14 Jul 2019 15:42:55 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Sun, 14 Jul 2019 15:42:55 -0400    

Click here for diff

M src/common/type/list.c
M src/common/type/list.h
M test/src/module/common/typeListTest.c

Fix incorrect offline upper bound for ignoring page checksum errors.

commit   : e10577d0b0c8054a08513b069e2f2647ddd51fb7    
  
author   : David Steele <david@pgmasters.net>    
date     : Thu, 11 Jul 2019 09:13:56 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Thu, 11 Jul 2019 09:13:56 -0400    

Click here for diff

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().  

M lib/pgBackRest/Backup/Backup.pm
M src/perl/embed.auto.c
M test/expect/mock-all-001.log
M test/expect/mock-all-002.log
M test/lib/pgBackRestTest/Module/Mock/MockAllTest.pm

commit   : 2fd0ebb78aabe882d4b080d4014d7ecabbded3da    
  
author   : David Steele <david@pgmasters.net>    
date     : Wed, 10 Jul 2019 15:08:35 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Wed, 10 Jul 2019 15:08:35 -0400    

Click here for diff

Using version 2.15.1 fixed the duplicate tarball problem but broke the auto-generated links.  Fix them manually since this should not be a common problem.  
  
Reported by Mohamad El-Rifai.  

M README.md

Revert a2dcdc07.

commit   : 6a89c1526e1ecc2940ed2bf42258ceb9ef85f0e0    
  
author   : Cynthia Shang <cynthia.shang@crunchydata.com>    
date     : Wed, 10 Jul 2019 12:04:25 -0400    
  
committer: David Steele <david@crunchydata.com>    
date     : Wed, 10 Jul 2019 12:04:25 -0400    

Click here for diff

It is simpler to implement the required logic in stanza-delete rather than add complexity to this function.  
  
Contributed by Cynthia Shang.  

M doc/xml/release.xml
M src/command/archive/get/file.c
M src/command/archive/push/push.c
M src/command/control/control.c
M src/command/control/control.h
M test/src/module/command/controlTest.c

Remove extraneous test macro.

commit   : 04646599a776348914b3e9bb9b707d2845540aac    
  
author   : David Steele <david@pgmasters.net>    
date     : Wed, 10 Jul 2019 06:17:33 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Wed, 10 Jul 2019 06:17:33 -0400    

Click here for diff

M src/config/config.c

Clarify that return statements are not removed in production builds.

commit   : 4e7db608dc6488feb99e5f2707f06e3ca39d78e8    
  
author   : David Steele <david@pgmasters.net>    
date     : Wed, 10 Jul 2019 06:11:21 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Wed, 10 Jul 2019 06:11:21 -0400    

Click here for diff

M src/common/debug.h

Update contributor name.

commit   : a22a6dc08c25a2af9ac9a6f2331144f2bae8dcbe    
  
author   : David Steele <david@pgmasters.net>    
date     : Wed, 10 Jul 2019 06:06:07 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Wed, 10 Jul 2019 06:06:07 -0400    

Click here for diff

M doc/xml/release.xml

Update lockStopTest() to optionally return a result rather than error.

commit   : a2dcdc0711a8dfb7d562b2ee0a8586de9676669f    
  
author   : Cynthia Shang <cynthia.shang@crunchydata.com>    
date     : Tue, 9 Jul 2019 16:41:58 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Tue, 9 Jul 2019 16:41:58 -0400    

Click here for diff

Some commands (e.g. stanza-delete) would prefer to throw a customized error.  
  
Contributed by Cynthia Shang.  

M doc/xml/release.xml
M src/command/archive/get/file.c
M src/command/archive/push/push.c
M src/command/control/control.c
M src/command/control/control.h
M test/src/module/command/controlTest.c

Exclude more build files from rsync between tests.

commit   : 27b3246e852e98902f21589f5cdfece9ebb27b39    
  
author   : David Steele <david@pgmasters.net>    
date     : Mon, 8 Jul 2019 08:29:25 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Mon, 8 Jul 2019 08:29:25 -0400    

Click here for diff

Files (especially build.auto.h) were being removed and forcing a full build between separate invocations of test.pl.  
  
This affected ad-hoc testing at the command-line, not a full test run in CI.  

M test/lib/pgBackRestTest/Common/JobTest.pm

Remove clang static analysis.

commit   : 5e1ed2e8a52c2c4d2151ef17496f0847cd9ae939    
  
author   : David Steele <david@pgmasters.net>    
date     : Fri, 5 Jul 2019 18:34:15 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Fri, 5 Jul 2019 18:34:15 -0400    

Click here for diff

This analysis never produced anything but false positives (var might be NULL) but took over a minute per test run and added 600MB to the test container.  

M doc/RELEASE.md
M doc/release.pl
M test/container.yaml
M test/lib/pgBackRestTest/Common/ContainerTest.pm
M test/lib/pgBackRestTest/Common/VmTest.pm
M test/test.pl
M test/travis.pl

Force PostgreSQL versions to string for newer versions of JSON:PP.

commit   : 488fb672948c07abfd7e38604eacbd0f82610b1a    
  
author   : David Steele <david@pgmasters.net>    
date     : Fri, 5 Jul 2019 17:25:01 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Fri, 5 Jul 2019 17:25:01 -0400    

Click here for diff

Since 2.91 JSON::PP has a bias for saving variables that look like numbers as numbers even if they were declared as strings.  
  
Force versions to strings where needed by appending ''.  
  
Update the json-pp-perl package on Ubuntu 18.04 to 2.97 to provide test coverage.  

M lib/pgBackRest/Archive/Info.pm
M lib/pgBackRest/Backup/Info.pm
M lib/pgBackRest/Manifest.pm
M src/perl/embed.auto.c
M test/lib/pgBackRestTest/Common/ContainerTest.pm
M test/lib/pgBackRestTest/Module/Manifest/ManifestAllPerlTest.pm

Remove perl critic and coverage.

commit   : 9836578520e3fb5c038230ebfb123001a7eb32fa    
  
author   : David Steele <david@pgmasters.net>    
date     : Fri, 5 Jul 2019 16:55:17 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Fri, 5 Jul 2019 16:55:17 -0400    

Click here for diff

No new Perl code is being developed, so these tools are just taking up time and making migrations to newer platforms harder.  There are only a few Perl tests remaining with full coverage so the coverage tool does not warn of loss of coverage in most cases.  
  
Remove both tools and associated libraries.  

M .travis.yml
M doc/lib/BackRestDoc/Common/DocManifest.pm
M lib/pgBackRest/LibC.pm
M src/perl/embed.auto.c
M test/Vagrantfile
M test/define.yaml
M test/lib/pgBackRestTest/Common/CiTest.pm
M test/lib/pgBackRestTest/Common/ContainerTest.pm
M test/lib/pgBackRestTest/Common/JobTest.pm
M test/lib/pgBackRestTest/Common/RunTest.pm
M test/lib/pgBackRestTest/Common/VmTest.pm
M test/lib/pgBackRestTest/Env/Host/HostDbSyntheticTest.pm
D test/lint/perlcritic.policy
D test/package/d8-libdevel-cover-perl_1.23-2_amd64.deb
D test/package/d9-libdevel-cover-perl_1.23-2_amd64.deb
D test/package/u12-libdevel-cover-perl_1.23-2_amd64.deb
D test/package/u14-libdevel-cover-perl_1.23-2_amd64.deb
D test/package/u14-libdevel-cover-perl_1.29-2_amd64.deb
D test/package/u16-libdevel-cover-perl_1.23-2_amd64.deb
D test/package/u18-libdevel-cover-perl_1.29-2_amd64.deb
M test/test.pl

Fix scoping violations exposed by optimizations in gcc 9.

commit   : fc2101352206a87f8471fd37455d9cd990fce95d    
  
author   : David Steele <david@pgmasters.net>    
date     : Fri, 5 Jul 2019 16:25:28 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Fri, 5 Jul 2019 16:25:28 -0400    

Click here for diff

gcc < 9 makes all compound literals function scope, even though the C spec requires them to be invalid outside the current scope.  Since the compiler and valgrind were not enforcing this we had a few violations which caused problems in gcc >= 9.  
  
Even though we are not quite ready to support gcc 9 officially, fix the scoping violations that currently exist in the codebase.  
  
Reported by chrlange, Ned T. Crigler.  

M doc/xml/release.xml
M libc/xs/storage/storage.xsh
M src/command/archive/common.c
M src/command/help/help.c
M src/common/lock.c
M src/config/parse.c
M src/perl/config.c
M src/storage/storage.c

Use minio for integration testing.

commit   : 1708f1d1514b3f2afb69664317df705a1fccfaf7    
  
author   : David Steele <david@pgmasters.net>    
date     : Tue, 2 Jul 2019 22:20:35 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Tue, 2 Jul 2019 22:20:35 -0400    

Click here for diff

ScalityS3 has not received any maintenance in years and is slow to start which is bad for testing.  Replace it with minio which starts quickly and ships as a single executable or a tiny container.  
  
Minio has stricter limits on allowable characters but should still provide enough coverage to show that our encoding is working correctly.  
  
This commit also includes the upgrade to openssl 1.1.1 in the Ubuntu 18.04 container.  

M src/common/io/tls/client.c
M test/container.yaml
M test/expect/mock-all-001.log
M test/expect/mock-all-002.log
M test/expect/mock-stanza-001.log
M test/expect/mock-stanza-002.log
M test/lib/pgBackRestTest/Common/ContainerTest.pm
M test/lib/pgBackRestTest/Common/VmTest.pm
M test/lib/pgBackRestTest/Env/Host/HostBackupTest.pm
M test/lib/pgBackRestTest/Env/Host/HostS3Test.pm
D test/lib/pgBackRestTest/Env/S3EnvTest.pm
M test/lib/pgBackRestTest/Module/Mock/MockAllTest.pm
A test/patch/debian-package.patch
A test/patch/rhel-package.patch

Updates for openssl 1.1.1.

commit   : b9b21315ead6610bb41ee19794763555a7265261    
  
author   : David Steele <david@pgmasters.net>    
date     : Tue, 2 Jul 2019 22:09:12 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Tue, 2 Jul 2019 22:09:12 -0400    

Click here for diff

Some HTTP error tests were failing after the upgrade to openssl 1.1.1, though the rest of the unit and integration tests worked fine.  This seemed to be related to the very small messages used in the error testing, but it pointed to an issue with the code not being fully compliant, made worse by auto-retry being enabled by default.  
  
Disable auto-retry and implement better error handling to bring the code in line with openssl recommendations.  
  
There's no evidence this is a problem in the field, but having all the tests pass seems like a good idea and the new code is certainly more robust.  
  
Coverage will be complete in the next commit when openssl 1.1.1 is introduced.  

M src/common/io/tls/client.c
M test/define.yaml
M test/src/module/common/ioTlsTest.c

Community yum package can be installed with --var=package=yum.

commit   : c55009d0f9ebfea746ab270be167dc2d78976ce9    
  
author   : David Steele <david@pgmasters.net>    
date     : Thu, 27 Jun 2019 14:39:11 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Thu, 27 Jun 2019 14:39:11 -0400    

Click here for diff

Like apt, the community yum package can now be installed instead of a user-specified package.  

M doc/xml/user-guide.xml

Remove Debian package patch merged to upstream.

commit   : b0728c33dbd7c99a7b785c152f20d5cdfa902bff    
  
author   : David Steele <david@pgmasters.net>    
date     : Thu, 27 Jun 2019 14:30:20 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Thu, 27 Jun 2019 14:30:20 -0400    

Click here for diff

D test/patch/debian-package.patch

Update release notes to explicitly select release commit when tagging.

commit   : 020101b30bfe9f2d34b878fcd51fad932781d9f8    
  
author   : David Steele <david@pgmasters.net>    
date     : Thu, 27 Jun 2019 09:38:40 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Thu, 27 Jun 2019 09:38:40 -0400    

Click here for diff

M doc/RELEASE.md

Reverse loop in infoPgSave() to be consistent with infoPgNewLoad().

commit   : 33e3d316d63a41cd64d217abe30786cfb48bf09e    
  
author   : Cynthia Shang <cynthia.shang@crunchydata.com>    
date     : Wed, 26 Jun 2019 19:52:04 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Wed, 26 Jun 2019 19:52:04 -0400    

Click here for diff

Contributed by Cynthia Shang.  

M src/info/infoPg.c
M test/src/module/info/infoPgTest.c

Add test function to create the S3 bucket instead of using aws cli.

commit   : 4bffa0c5bb7d551c60b8d8bcff9a3bbe6e02eddd    
  
author   : David Steele <david@crunchydata.com>    
date     : Wed, 26 Jun 2019 15:02:30 -0400    
  
committer: David Steele <david@crunchydata.com>    
date     : Wed, 26 Jun 2019 15:02:30 -0400    

Click here for diff

Eventually the idea is to remove the dependency on aws cli since Python is a big install.  

M libc/xs/storage/storage.xs
M libc/xs/storage/storage.xsh
M src/Makefile.in
M src/perl/libc.auto.c
M test/lib/pgBackRestTest/Env/HostEnvTest.pm

Add Perl interface to C storage layer.

commit   : 4815752ccc46ff742f67b369bc75ad3efcf11204    
  
author   : David Steele <david@pgmasters.net>    
date     : Wed, 26 Jun 2019 08:24:58 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Wed, 26 Jun 2019 08:24:58 -0400    

Click here for diff

Maintaining the storage layer/drivers in two languages is burdensome.  Since the integration tests require the Perl storage layer/drivers we'll need them even after the core code is migrated to C.  Create an interface layer so the Perl code can be removed and new storage drivers/features introduced without adding Perl equivalents.  
  
The goal is to move the integration tests to C so this interface will eventually be removed.  That being the case, the interface was designed for maximum compatibility to ease the transition.  The result looks a bit hacky but we'll improve it as needed until it can be retired.  

M doc/xml/release.xml
M doc/xml/user-guide.xml
M lib/pgBackRest/Archive/Get/File.pm
M lib/pgBackRest/Archive/Info.pm
M lib/pgBackRest/Backup/Backup.pm
M lib/pgBackRest/Backup/File.pm
D lib/pgBackRest/Backup/Filter/PageChecksum.pm
D lib/pgBackRest/Common/Http/Client.pm
D lib/pgBackRest/Common/Http/Common.pm
D lib/pgBackRest/Common/Xml.pm
M lib/pgBackRest/LibCAuto.pm
M lib/pgBackRest/Protocol/Local/Minion.pm
M lib/pgBackRest/Protocol/Remote/Minion.pm
M lib/pgBackRest/Protocol/Storage/Helper.pm
M lib/pgBackRest/Protocol/Storage/Remote.pm
M lib/pgBackRest/Restore.pm
M lib/pgBackRest/RestoreFile.pm
M lib/pgBackRest/Stanza.pm
M lib/pgBackRest/Storage/Base.pm
D lib/pgBackRest/Storage/Cifs/Driver.pm
D lib/pgBackRest/Storage/Filter/CipherBlock.pm
D lib/pgBackRest/Storage/Filter/Gzip.pm
D lib/pgBackRest/Storage/Filter/Sha.pm
M lib/pgBackRest/Storage/Helper.pm
D lib/pgBackRest/Storage/Posix/Driver.pm
D lib/pgBackRest/Storage/Posix/FileRead.pm
D lib/pgBackRest/Storage/Posix/FileWrite.pm
D lib/pgBackRest/Storage/S3/Auth.pm
D lib/pgBackRest/Storage/S3/Driver.pm
D lib/pgBackRest/Storage/S3/FileRead.pm
D lib/pgBackRest/Storage/S3/FileWrite.pm
D lib/pgBackRest/Storage/S3/Info.pm
D lib/pgBackRest/Storage/S3/Request.pm
R055 lib/pgBackRest/Storage/Local.pm lib/pgBackRest/Storage/Storage.pm
A lib/pgBackRest/Storage/StorageRead.pm
A lib/pgBackRest/Storage/StorageWrite.pm
M libc/LibC.h
M libc/LibC.xs
M libc/Makefile.PL
M libc/build/lib/pgBackRestLibC/Build.pm
M libc/typemap
D libc/xs/crypto/cipherBlock.xs
D libc/xs/crypto/cipherBlock.xsh
M libc/xs/crypto/hash.xs
M libc/xs/crypto/hash.xsh
M libc/xs/postgres/pageChecksum.xs
M libc/xs/storage/storage.xs
A libc/xs/storage/storage.xsh
A libc/xs/storage/storageRead.xs
A libc/xs/storage/storageRead.xsh
A libc/xs/storage/storageWrite.xs
A libc/xs/storage/storageWrite.xsh
M src/Makefile.in
M src/command/restore/file.c
M src/common/error.c
M src/perl/embed.auto.c
M src/perl/libc.auto.c
M src/storage/storage.c
M src/storage/storage.intern.h
M test/define.yaml
M test/expect/mock-all-001.log
M test/expect/mock-all-002.log
M test/expect/mock-archive-002.log
M test/expect/mock-archive-stop-002.log
M test/expect/mock-stanza-001.log
M test/expect/mock-stanza-002.log
M test/lib/pgBackRestTest/Common/DefineTest.pm
M test/lib/pgBackRestTest/Common/FileTest.pm
M test/lib/pgBackRestTest/Common/RunTest.pm
M test/lib/pgBackRestTest/Env/Host/HostBackupTest.pm
M test/lib/pgBackRestTest/Env/Host/HostDbSyntheticTest.pm
M test/lib/pgBackRestTest/Module/Backup/BackupFileUnitPerlTest.pm
D test/lib/pgBackRestTest/Module/Common/CommonHttpClientPerlTest.pm
M test/lib/pgBackRestTest/Module/Common/CommonIniPerlTest.pm
M test/lib/pgBackRestTest/Module/Manifest/ManifestAllPerlTest.pm
M test/lib/pgBackRestTest/Module/Mock/MockAllTest.pm
M test/lib/pgBackRestTest/Module/Mock/MockArchiveStopTest.pm
M test/lib/pgBackRestTest/Module/Mock/MockStanzaTest.pm
D test/lib/pgBackRestTest/Module/Performance/PerformanceIoTest.pm
M test/lib/pgBackRestTest/Module/Real/RealAllTest.pm
M test/lib/pgBackRestTest/Module/Stanza/StanzaAllPerlTest.pm
D test/lib/pgBackRestTest/Module/Storage/StorageFilterCipherBlockPerlTest.pm
D test/lib/pgBackRestTest/Module/Storage/StorageFilterGzipPerlTest.pm
D test/lib/pgBackRestTest/Module/Storage/StorageFilterShaPerlTest.pm
M test/lib/pgBackRestTest/Module/Storage/StorageHelperPerlTest.pm
D test/lib/pgBackRestTest/Module/Storage/StorageLocalPerlTest.pm
A test/lib/pgBackRestTest/Module/Storage/StoragePerlTest.pm
D test/lib/pgBackRestTest/Module/Storage/StoragePosixPerlTest.pm
D test/lib/pgBackRestTest/Module/Storage/StorageS3AuthPerlTest.pm
D test/lib/pgBackRestTest/Module/Storage/StorageS3CertPerlTest.pm
D test/lib/pgBackRestTest/Module/Storage/StorageS3PerlTest.pm
D test/lib/pgBackRestTest/Module/Storage/StorageS3RequestPerlTest.pm
M test/src/module/storage/posixTest.c

Fix missing dash in site name.

commit   : bd6c0941e9e3aa2dab84f7404da1f9dc60cd693b    
  
author   : David Steele <david@pgmasters.net>    
date     : Tue, 25 Jun 2019 17:27:19 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Tue, 25 Jun 2019 17:27:19 -0400    

Click here for diff

Without this the project name and tagline just run together.  

M doc/lib/BackRestDoc/Html/DocHtmlPage.pm

Begin v2.16 development.

commit   : 466602387bc279aa44a811dc2948b893e4127b2c    
  
author   : David Steele <david@pgmasters.net>    
date     : Tue, 25 Jun 2019 08:42:20 -0400    
  
committer: David Steele <david@pgmasters.net>    
date     : Tue, 25 Jun 2019 08:42:20 -0400    

Click here for diff

M doc/RELEASE.md
M doc/resource/git-history.cache
M doc/xml/release.xml
M lib/pgBackRest/Version.pm
M src/configure
M src/configure.ac
M src/perl/embed.auto.c
M src/version.h