pgBackRest 2.48 commit log

v2.47: Performance Improvements and Bug Fixes

commit   : b5b033cc1ce152d387f20681f023b5e1f7c3ed3b    
  
author   : David Steele <[email protected]>    
date     : Mon, 24 Jul 2023 09:12:30 +0200    
  
committer: David Steele <[email protected]>    
date     : Mon, 24 Jul 2023 09:12:30 +0200    

Click here for diff

Bug Fixes:  
  
* Preserve block incremental info in manifest during delta backup. (Reviewed by Stephen Frost. Reported by Francisco Miguel Biete Banon.)  
* Fix block incremental file names in verify command. (Reviewed by Reid Thompson. Reported by Francisco Miguel Biete Banon.)  
* Fix spurious automatic delta backup on backup from standby. (Reviewed by Stephen Frost. Reported by krmozejko, Don Seiler.)  
* Skip recovery.signal for PostgreSQL >= 12 when recovery type=none. (Reviewed by Stefan Fercot. Reported by T.Anastacio.)  
* Fix unique label generation for diff/incr backup. (Fixed by Andrey Sokolov. Reviewed by David Steele.)  
* Fix time-based archive expiration when no backups are expired. (Reviewed by Stefan Fercot.)  
  
Improvements:  
  
* Improve performance of SFTP storage driver. (Contributed by Stephen Frost, Reid Thompson. Reviewed by David Steele.)  
* Add timezone offset to info command date/time output. (Reviewed by Stefan Fercot, Philip Hurst. Suggested by Philip Hurst.)  
* Centralize error handling for unsupported features. (Reviewed by Stefan Fercot.)  
  
Documentation Improvements:  
  
* Clarify preference to install from packages in the user guide. (Reviewed by Stefan Fercot. Suggested by dr-kd.)  

M CONTRIBUTING.md
M README.md
M doc/resource/exe.cache
M doc/resource/git-history.cache
M doc/xml/auto/metric-coverage-report.auto.xml
M doc/xml/release.xml
M meson.build
M src/build/configure.ac
M src/configure
M src/version.h
M test/code-count/file-type.yaml

Fix spurious automatic delta backup on backup from standby.

commit   : 5ed6f8df1487174985c42d6e13c367d70c2d8b8a    
  
author   : David Steele <[email protected]>    
date     : Tue, 18 Jul 2023 07:35:12 +0200    
  
committer: GitHub <[email protected]>    
date     : Tue, 18 Jul 2023 07:35:12 +0200    

Click here for diff

When performing backup from standby the file sizes on the standby may not be equal to file sizes on the primary. This is because replication continues during the backup and by the time the file is copied from the standby it may have changed. Since we cap the size of all files copied from the standby this practically applies to truncation and in particular truncation of free space maps (at least, every case we have seen so far is an fsm). Free space maps are especially vulnerable since they are only partially replicated, which amplifies the difference between the primary and standby.
  

  
On an incremental backup it may look like the size has changed on the primary (because of the final size recorded by the standby in the prior backup) but the timestamp may not have changed on the primary and this will trigger a checksum delta for safety. While this has no impact on backup integrity, checksum delta incrementals can run much longer than regular incrementals and backup schedules may be impacted.
  

  
The solution is to preserve the original size in the manifest and use it to do the time/size check. In the case of backup from standby the original size will always be the size on the primary, which makes comparisons against subsequent file sizes on the primary consistent. Original size is only stored in the manifest when it differs from final size, so there should not be any noticeable manifest bloat.

M doc/xml/release.xml
M src/command/backup/backup.c
M src/info/manifest.c
M src/info/manifest.h
M test/src/common/harnessManifest.c
M test/src/common/harnessManifest.h
M test/src/module/command/backupTest.c
M test/src/module/info/manifestTest.c

Preserve block incremental info in manifest during delta backup.

commit   : 4c27d74bbd3a44d8ab1af140277d3cd8302060c2    
  
author   : David Steele <[email protected]>    
date     : Mon, 17 Jul 2023 23:37:02 +0300    
  
committer: GitHub <[email protected]>    
date     : Mon, 17 Jul 2023 23:37:02 +0300    

Click here for diff

It was possible for block incremental info to be lost if a file had been modified in such a way that block incremental would be disabled if the file were new, e.g. if the file shrank below the block incremental limit or the file timestamp regressed far enough into the past. In those cases the block incremental info would not be copied in manifestBuildIncr().
  

  
Instead always copy the block incremental info in case the file ends up being referenced to a prior backup.
  

  
The validation tests were not robust enough to catch this issue so they were improved in 1d42aed.
  

  
In the particular case that exposed this bug, a file had a timestamp that was almost four weeks in the past at full backup time. A few days later a fail over occurred and the next incremental ran on the new primary (old standby) in delta mode. The same file had a timestamp just a few hours older than in the full backup, but now four weeks older than the current backup. Block incremental was disabled for the file on initial manifest build because of its age, which meant the block incremental info was not copied into the new manifest. The delta then determined the file had not changed and referenced it to the full backup. On restore, the file appeared to be a normal file stored in a bundle but could not be decompressed because it was in fact a block incremental.

M doc/xml/release.xml
M src/info/manifest.c
M test/src/module/command/backupTest.c

Fix block incremental file names in verify command.

commit   : cdb7e26350822b55c00771d6d575242b1202e741    
  
author   : David Steele <[email protected]>    
date     : Fri, 14 Jul 2023 17:53:58 +0300    
  
committer: GitHub <[email protected]>    
date     : Fri, 14 Jul 2023 17:53:58 +0300    

Click here for diff

The verify command was not appending the .pgbi extension instead of the compression extension when verifying block incremental files stored outside a bundle.
  

  
Originally the idea was that verify would not need any changes (since it just examines repo-size and checksum) but at some point the new extension was added and broke that assumption.
  

  
Use backupFileRepoPathP() to generate the correct filename (Just like backup, restore, etc).

M doc/xml/release.xml
M src/command/verify/verify.c
M test/src/module/command/verifyTest.c

Improve validation of referenced files in command/backup unit test.

commit   : 1d42aed152563fff6ec70c517d86eb39158b3f20    
  
author   : David Steele <[email protected]>    
date     : Fri, 14 Jul 2023 11:18:25 +0300    
  
committer: David Steele <[email protected]>    
date     : Fri, 14 Jul 2023 11:18:25 +0300    

Click here for diff

Referenced files were not being checked for validity unless they were hard linked to the current backup (which a lot of the tests did). Newer tests with bundling do not have hard links and so missed these checks.  
  
Improve the validation code to check referenced files in the manifest even when they are not hard linked into the current backup.  
  
Add a delta test for bundling/block incremental that includes a file old enough to get a block size of zero. These are good tests by themselves but they also reduce the churn in an upcoming bug fix.  

M test/src/module/command/backupTest.c

Log when file size changes during backup.

commit   : c9703b35304c66a0bd0ebaaaebb389150ef207d6    
  
author   : David Steele <[email protected]>    
date     : Thu, 13 Jul 2023 13:47:27 +0300    
  
committer: David Steele <[email protected]>    
date     : Thu, 13 Jul 2023 13:47:27 +0300    

Click here for diff

It is possible for the size of a file to change during the backup. In most cases we won't notice since files sizes are usually capped but it is possible for some files to grow or shrink between when they are recorded in the manifest and when they are actually copied. The new size is recorded in the manifest but the old size may be useful for debugging.  
  
The new code has coverage but no test changes because it is covered by the parallel backup testing, which does not have deterministic log output. It doesn't seem worth creating a new test to check the log format as it is not very critical (though the output was manually verified).  

M src/command/backup/backup.c

Mention block-level backups in feature list.

commit   : b6b13bd6344a1f3ed7279f5a8da771643c0e948a    
  
author   : David Steele <[email protected]>    
date     : Wed, 12 Jul 2023 13:23:16 +0300    
  
committer: David Steele <[email protected]>    
date     : Wed, 12 Jul 2023 13:23:16 +0300    

Click here for diff

M doc/xml/index.xml

Increase protocolServerError() logging to debug level.

commit   : c8afbed5308d31302c5853850e4ed56d48b6bb4b    
  
author   : David Steele <[email protected]>    
date     : Wed, 12 Jul 2023 13:09:34 +0300    
  
committer: David Steele <[email protected]>    
date     : Wed, 12 Jul 2023 13:09:34 +0300    

Click here for diff

Errors should be rare enough that it makes sense to log them at debug level. Right now if there is an error if won't be logged at debug level, which makes it harder to tell why the main process may have terminated the local/remote process.  

M src/protocol/server.c

Rename macros in command/verify unit test.

commit   : 06536b5814f2fed3e710d1d7b578aa6be53195cb    
  
author   : David Steele <[email protected]>    
date     : Wed, 12 Jul 2023 10:20:09 +0300    
  
committer: David Steele <[email protected]>    
date     : Wed, 12 Jul 2023 10:20:09 +0300    

Click here for diff

These macros were redefined, which worked since they were identical to their prior definitions, but this will not always be true.  

M test/src/module/command/verifyTest.c

Modify time_t casts based on complaints from Coverity.

commit   : aa229a1deef3afeebb66db1443b19e24559adf96    
  
author   : David Steele <[email protected]>    
date     : Sun, 9 Jul 2023 21:56:05 +0300    
  
committer: David Steele <[email protected]>    
date     : Sun, 9 Jul 2023 21:56:05 +0300    

Click here for diff

Coverity complained about time_t being cast directly to unsigned int, so instead cast the result of the operation.  
  
We are confident in both cases that the time_t values will not be out of unsigned int range but Coverity has no way to know that.  
  
One of these is new (introduced by 9efd5cd0) but the other one (from a9867cb0) remained unnoticed for a while, though it has not caused any production impact.  

M doc/xml/release.xml
M src/command/backup/backup.c
M src/command/info/info.c

Improve performance of SFTP storage driver.

commit   : 28b6b2d4659d78ce67c1bd3104d96e5705d955c9    
  
author   : Stephen Frost <[email protected]>    
date     : Fri, 7 Jul 2023 04:36:15 -0400    
  
committer: GitHub <[email protected]>    
date     : Fri, 7 Jul 2023 04:36:15 -0400    

Click here for diff

The initial implementation used simple waits when having to loop due to getting a LIBSSH2_ERROR_EAGAIN, but we don't want to just wait some amount of time, we want to wait until we're able to read or write on the fd that we would have blocked on.
  

  
This change removes all of the wait code from the SFTP driver and changes the loops to call the newly introduced storageSftpWaitFd(), which in turn checks with libssh2 to determine the appropriate direction to wait on (read, write, or both) and then calls fdReady() to perform the wait using the provided timeout.
  

  
This also removes the need to pass ioSession or timeout down into the SFTP read/write code.

M doc/xml/release.xml
M src/storage/sftp/read.c
M src/storage/sftp/read.h
M src/storage/sftp/storage.c
M src/storage/sftp/storage.intern.h
M src/storage/sftp/write.c
M src/storage/sftp/write.h
M test/define.yaml
A test/src/common/harnessFd.c
A test/src/common/harnessFd.h
M test/src/common/harnessLibSsh2.c
M test/src/common/harnessLibSsh2.h
M test/src/module/storage/sftpTest.c

Cleanup of init/handshake in storageSftpNew().

commit   : 125676ae0e98d3730d2dc0d47e37ca1df145d044    
  
author   : David Steele <[email protected]>    
date     : Fri, 7 Jul 2023 09:56:26 +0200    
  
committer: David Steele <[email protected]>    
date     : Fri, 7 Jul 2023 09:56:26 +0200    

Click here for diff

Rename handshakeStatus to rc to be consistent with the rest of the module.  
  
Add comments and do some reformatting.  

M src/storage/sftp/storage.c

Add timezone offset to info command date/time output.

commit   : 9efd5cd0bb40c5dc2fcac2e21c9b62e554b94db6    
  
author   : David Steele <[email protected]>    
date     : Thu, 6 Jul 2023 18:46:31 +0200    
  
committer: GitHub <[email protected]>    
date     : Thu, 6 Jul 2023 18:46:31 +0200    

Click here for diff

This makes it easier to use timestamps from the info command directly in PostgreSQL recovery settings, especially the --target option.

M .cirrus.yml
M doc/xml/release.xml
M src/command/info/info.c
M test/src/module/command/infoTest.c

Fix time-based archive expiration when no backups are expired.

commit   : 762498f4cd5f1425db4c176fc707926d62cc7c04    
  
author   : David Steele <[email protected]>    
date     : Thu, 6 Jul 2023 11:27:00 +0200    
  
committer: GitHub <[email protected]>    
date     : Thu, 6 Jul 2023 11:27:00 +0200    

Click here for diff

In the case that no backups were expired but time-based retention was met no archive expiration would occur and the following would be logged:
  

  
INFO: time-based archive retention not met - archive logs will not be expired
  

  
In most cases this was harmless, but when retention was first met or if retention was increased, it would require one additional backup to expire earlier WAL. After that expiration worked as normal.
  

  
Even once expiration was working normally the message would continue to be output, which was pretty misleading since retention had been met, even though there was nothing to do.
  

  
Bring this code in line with count-based retention, i.e. always log what should be expired at detail level (even if nothing will be expired) and then log info about what was expired (even if nothing is expired). For example:
  

  
DETAIL: repo1: 11-1 archive retention on backup 20181119-152138F, start = 000000010000000000000002
  
INFO: repo1: 11-1 no archive to remove

M doc/xml/release.xml
M src/command/expire/expire.c
M test/src/module/command/expireTest.c

Make result code handling in storage/sftp more consistent.

commit   : e280ed9098a6f5da9bdabb541e9c69d4f24ffcf2    
  
author   : David Steele <[email protected]>    
date     : Thu, 6 Jul 2023 08:58:16 +0200    
  
committer: David Steele <[email protected]>    
date     : Thu, 6 Jul 2023 08:58:16 +0200    

Click here for diff

Initializers are useless since rc is always set later. Make rc checks consistent with the rest of the module.  

M src/storage/sftp/read.c
M src/storage/sftp/write.c
M test/src/common/harnessLibSsh2.c

Remove unresolved todo from 87087fac.

commit   : 1fd8845c7ffd76ee335ec7960ccd531eef43bd29    
  
author   : David Steele <[email protected]>    
date     : Thu, 29 Jun 2023 11:08:58 +0200    
  
committer: David Steele <[email protected]>    
date     : Thu, 29 Jun 2023 11:08:58 +0200    

Click here for diff

Seems easiest just to make the additional config required since it tests that custom ports are being used correctly. The test for synthetic was a noop since SFTP is not used in synthetic tests.  

M test/lib/pgBackRestTest/Env/Host/HostBackupTest.pm

Update comments for removal of chunking and block numbers.

commit   : 0051d7ca872c84231dd55057586f957aa2bc1fa3    
  
author   : David Steele <[email protected]>    
date     : Thu, 29 Jun 2023 09:42:12 +0200    
  
committer: David Steele <[email protected]>    
date     : Thu, 29 Jun 2023 09:42:12 +0200    

Click here for diff

dd4e526 should have updated this comment but failed to do so.  

M src/command/backup/blockIncr.h

Fix unique label generation for diff/incr backup.

commit   : 0ac09344dc17fb54e250705ce49399b86329bb3d    
  
author   : Andrey Sokolov <[email protected]>    
date     : Wed, 28 Jun 2023 19:19:20 +0300    
  
committer: GitHub <[email protected]>    
date     : Wed, 28 Jun 2023 19:19:20 +0300    

Click here for diff

If there were at least two full backups and the last one was expired, it was impossible to make either a differential or incremental backup without first making a new full backup. The backupLabelCreate() function identified this situation as clock skew because the new backup label was compared with label of the expired full backup.
  

  
If the new backup is differential or incremental, then its label is now compared with the labels of differential or incremental backups related to the same full backup.
  

  
Also convert a hard-coded date length to a macro.

M doc/xml/release.xml
M src/command/backup/backup.c
M src/command/backup/common.c
M src/command/backup/common.h
M test/src/module/command/backupTest.c

Fix missed memory auditing in FUNCTION_LOG_RETURN_VOID().

commit   : 5cbef3ade2ab08d8d2431f40d09683efe55c9586    
  
author   : David Steele <[email protected]>    
date     : Sun, 25 Jun 2023 17:36:57 +0200    
  
committer: David Steele <[email protected]>    
date     : Sun, 25 Jun 2023 17:36:57 +0200    

Click here for diff

9ca492c missed adding auditing to this macro and as a result a few memory leaks have slipped through. Add auditing to the macro to close this hole.  
  
Of the leaks found the only possibly serious one is in blockIncrProcess(), which would leak a PackRead of about eight bytes with every superblock. Since superblocks max out at a few thousand per file this was probably not too bad.  
  
Also change the ordering of auditing in FUNCTION_TEST_RETURN_VOID(). Even though the order does not matter, having it different from the other macros is confusing and looks like an error.  

M src/command/backup/blockIncr.c
M src/common/debug.h
M src/storage/posix/write.c
M src/storage/sftp/storage.c
M test/src/command/test/test.c

Add test for configuration hash type override behavior.

commit   : ecae001653489ac734c3424ea10393989c218ab5    
  
author   : David Steele <[email protected]>    
date     : Sat, 24 Jun 2023 10:18:29 +0200    
  
committer: David Steele <[email protected]>    
date     : Sat, 24 Jun 2023 10:18:29 +0200    

Click here for diff

This behavior is different than regular options where a repeated value will result in an error. It appears to be a legacy of the original Perl implementation, which used a hash as the underlying data type in the built-in command-line parser, and the C command-line parser was written to match.  

M test/src/module/config/parseTest.c

Update Fedora test image to Fedora 38.

commit   : 434938e32b2f71301196f933c3b9a62ed1183c31    
  
author   : David Steele <[email protected]>    
date     : Thu, 22 Jun 2023 18:23:06 +0200    
  
committer: David Steele <[email protected]>    
date     : Thu, 22 Jun 2023 18:23:06 +0200    

Click here for diff

This adds testing for the latest tool versions, e.g. gcc.  

M .github/workflows/test.yml
M test/container.yaml
M test/lib/pgBackRestTest/Common/ContainerTest.pm
M test/lib/pgBackRestTest/Common/VmTest.pm

Add --tz param missed in C unit test migration.

commit   : 5531e2662d2abcd52c24f25b4a5836c9e07a8ac9    
  
author   : David Steele <[email protected]>    
date     : Sun, 18 Jun 2023 12:55:29 +0300    
  
committer: David Steele <[email protected]>    
date     : Sun, 18 Jun 2023 12:55:29 +0300    

Click here for diff

This was missed in the C unit test migration and since then a new test was added that was not setting its timezone correctly.  
  
This feature exists to make sure the tests will run on systems with different timezones and has no impact on the core code.  

M test/lib/pgBackRestTest/Common/JobTest.pm
M test/src/module/command/manifestTest.c

Clarify preference to install from packages in the user guide.

commit   : a36f480c85c7add6fdf0e5517748d740e3a7b424    
  
author   : David Steele <[email protected]>    
date     : Wed, 14 Jun 2023 14:39:40 +0200    
  
committer: GitHub <[email protected]>    
date     : Wed, 14 Jun 2023 14:39:40 +0200    

Click here for diff

M doc/xml/release.xml
M doc/xml/user-guide.xml

Use new LibXML error handler.

commit   : 9b1bc7d11bdea9cdb1bbf1210d66d53c15d72a46    
  
author   : David Steele <[email protected]>    
date     : Wed, 14 Jun 2023 12:28:00 +0200    
  
committer: David Steele <[email protected]>    
date     : Wed, 14 Jun 2023 12:28:00 +0200    

Click here for diff

The old error handler has been deprecated.  

M src/common/type/xml.c

Clarify comments for the handling of pg_control during restore.

commit   : 4adf6eed09da3f0819abef813c5a44deb9c91487    
  
author   : David Steele <[email protected]>    
date     : Mon, 12 Jun 2023 23:10:14 +0200    
  
committer: David Steele <[email protected]>    
date     : Mon, 12 Jun 2023 23:10:14 +0200    

Click here for diff

M src/command/restore/restore.c

Update NEWS.md for new version and features.

commit   : 396e237d53a94b04878bfea23b4de2400256de82    
  
author   : David Steele <[email protected]>    
date     : Mon, 12 Jun 2023 15:41:39 +0200    
  
committer: GitHub <[email protected]>    
date     : Mon, 12 Jun 2023 15:41:39 +0200    

Click here for diff

M doc/NEWS.md

Fix typo in "Upgrading PostgreSQL" section of user guide.

commit   : 6875358d11828cbbaffb51f2297a866af32ee8a4    
  
author   : David Steele <[email protected]>    
date     : Mon, 12 Jun 2023 11:26:03 +0200    
  
committer: David Steele <[email protected]>    
date     : Mon, 12 Jun 2023 11:26:03 +0200    

Click here for diff

M src/build/help/help.xml

Improve comments in protocol/command module.

commit   : 818ef4b71d3ec77c0003ea8ca83981977b4447ac    
  
author   : David Steele <[email protected]>    
date     : Thu, 8 Jun 2023 16:36:25 +0300    
  
committer: David Steele <[email protected]>    
date     : Thu, 8 Jun 2023 16:36:25 +0300    

Click here for diff

M src/protocol/command.c
M src/protocol/command.h

Move delete stanza section in user guide.

commit   : 0bf1b4a3b8cc6caf12a4174cd52a1782cda4dc31    
  
author   : David Steele <[email protected]>    
date     : Fri, 26 May 2023 19:50:08 +0300    
  
committer: David Steele <[email protected]>    
date     : Fri, 26 May 2023 19:50:08 +0300    

Click here for diff

Deleting a stanza after all the storage driver stanzas were created was causing problems because the SFTP driver is slow and the GCS driver has no server (so it threw errors). This delayed the shutdown of PostgreSQL, which for some reason caused systemctl to hang when the documentation was being built on a RHEL host.  
  
Move the section up and add a comment about why the location is required. Also add a comment to the GCS section about its location.  
  
This does not address the issue of systemctl hanging on RHEL container hosts but it will hopefully make it less common.  

M doc/xml/user-guide.xml

New CI container build for PostgreSQL 16 beta1.

commit   : 5d671c63d898e9bf1c08c8ed9e830070361c861e    
  
author   : David Steele <[email protected]>    
date     : Thu, 25 May 2023 20:08:12 +0300    
  
committer: David Steele <[email protected]>    
date     : Thu, 25 May 2023 20:08:12 +0300    

Click here for diff

M test/container.yaml
M test/lib/pgBackRestTest/Common/ContainerTest.pm

Skip recovery.signal for PostgreSQL >= 12 when recovery type=none.

commit   : 9cceed6ac4a32c14a797eba89a4ad1dc06d89d80    
  
author   : David Steele <[email protected]>    
date     : Wed, 24 May 2023 16:34:21 +0300    
  
committer: GitHub <[email protected]>    
date     : Wed, 24 May 2023 16:34:21 +0300    

Click here for diff

Bring PostgreSQL >= 12 behavior in line with other versions when recovery type=none.
  

  
We are fairly sure this did not work correctly when PostgreSQL 12 was released, but apparently the issue has been fixed since then. Either way, after testing we have determined that the behavior is now as expected.

M doc/xml/release.xml
M src/command/restore/restore.c
M test/src/module/command/restoreTest.c

Centralize error handling for unsupported features.

commit   : 36ff81dc6ff7e98e40c0c05a4a343a71b91b1678    
  
author   : David Steele <[email protected]>    
date     : Wed, 24 May 2023 14:17:07 +0300    
  
committer: GitHub <[email protected]>    
date     : Wed, 24 May 2023 14:17:07 +0300    

Click here for diff

Some features are conditionally compiled into pgBackRest (e.g. lz4). Previously checking to see if the feature existed was the responsibility of the feature's module.
  

  
Centralize this logic in the config/parse module to make the errors more detailed and consistent.
  

  
This also fixes the assert that is thrown when SFTP storage is specified but SFTP support is not compiled into pgBackRest.

M doc/xml/release.xml
M src/build/config/config.yaml
M src/build/config/parse.c
M src/build/config/parse.h
M src/build/config/render.c
M src/common/compress/helper.c
M src/common/compress/helper.h
M src/config/load.c
M src/config/parse.auto.c.inc
M src/config/parse.c
M test/src/module/build/configTest.c
M test/src/module/common/compressTest.c
M test/src/module/config/parseTest.c

Refactor allow list processing in config/parse module.

commit   : de46276bf60b8a2181621b123d1a99e56808a089    
  
author   : David Steele <[email protected]>    
date     : Wed, 24 May 2023 09:56:32 +0300    
  
committer: David Steele <[email protected]>    
date     : Wed, 24 May 2023 09:56:32 +0300    

Click here for diff

Combine StringId and int checking into a single loop. This seems more compact and makes it easier to add code that affects both types (and possibly more types in the future).  

M src/config/parse.c

Fix sftp-all=y in the user guide so it creates a valid configuration.

commit   : 48b26bf569664da59bff08eb3ef959f0cd440e29    
  
author   : David Steele <[email protected]>    
date     : Tue, 23 May 2023 12:50:12 +0300    
  
committer: David Steele <[email protected]>    
date     : Tue, 23 May 2023 12:50:12 +0300    

Click here for diff

This was not tested in 87087fac and the generated config was only valid for pushing from the primary. Also do some general cleanup.  
  
Update the SFTP server user to be "pgbackrest" instead of "postgres".  
  
Even though sftp-all=y now creates a valid configuration, the user guide build still fails because SFTP is too slow and operations time out (particularly starting PostgreSQL). This will need to be addressed in a future commit.  

M doc/xml/user-guide.xml

Remove user-facing documentation references to --vm=none.

commit   : c633b187db32d18ccab24e77ab3413335e067775    
  
author   : David Steele <[email protected]>    
date     : Tue, 23 May 2023 10:58:51 +0300    
  
committer: David Steele <[email protected]>    
date     : Tue, 23 May 2023 10:58:51 +0300    

Click here for diff

This parameter is now optional and defaults to none so there is no reason to explicitly show it in user-facing documentation.  
  
Also make the vm parameter in ci.pl optional to be consistent with how test.pl behaves.  

M .cirrus.yml
M .github/workflows/test.yml
M CONTRIBUTING.md
M doc/xml/contributing.xml
M test/ci.pl

Explicitly create SSH directory in SFTP setup.

commit   : 4ec51cdb2f92e3fd814063a2bb606640965f8c5a    
  
author   : David Steele <[email protected]>    
date     : Tue, 23 May 2023 10:40:56 +0300    
  
committer: David Steele <[email protected]>    
date     : Tue, 23 May 2023 10:40:56 +0300    

Click here for diff

RHEL 9 (at least) will warn on stderr that the directory has been created which causes the documentation build to fail.  

M doc/xml/user-guide.xml

Build u20 image to speed contributing document generation.

commit   : 5bbe98758919a38692cd859809203cb029543c59    
  
author   : David Steele <[email protected]>    
date     : Tue, 23 May 2023 10:14:00 +0300    
  
committer: David Steele <[email protected]>    
date     : Tue, 23 May 2023 10:14:00 +0300    

Click here for diff

This image was left out of the last round of builds, which forced the contributing document to build it from scratch.  

M CONTRIBUTING.md
M test/container.yaml

Add missed --no-log-timestamp in unit tests and improved formatting.

commit   : c2c60350d376379322d6c14c27cbb93bf6e86987    
  
author   : David Steele <[email protected]>    
date     : Tue, 23 May 2023 08:25:17 +0300    
  
committer: David Steele <[email protected]>    
date     : Tue, 23 May 2023 08:25:17 +0300    

Click here for diff

The --no-log-timestamp option was missed when unit test building was migrated to C, which caused test timings to show up in the contributing guide. This caused no harm but did create churn in this file during releases.  
  
Also improve the formatting when test timing is disabled.  

M CONTRIBUTING.md
M test/lib/pgBackRestTest/Common/JobTest.pm
M test/src/common/harnessTest.c

Begin v2.47 development.

commit   : 9dbf76d8e87287786f03b65c94305b3dc126029b    
  
author   : David Steele <[email protected]>    
date     : Mon, 22 May 2023 11:19:00 +0300    
  
committer: David Steele <[email protected]>    
date     : Mon, 22 May 2023 11:19:00 +0300    

Click here for diff

M doc/resource/git-history.cache
M doc/xml/release.xml
M meson.build
M src/build/configure.ac
M src/configure
M src/version.h