pgBackRest 2.52 commit log

v2.51: Meson Build System

commit   : dc07fb1e5bd38026d4fefb67a0525a89ac98b520    
  
author   : David Steele <[email protected]>    
date     : Mon, 25 Mar 2024 09:53:22 +1300    
  
committer: David Steele <[email protected]>    
date     : Mon, 25 Mar 2024 09:53:22 +1300    

Click here for diff

NOTE TO PACKAGERS: The build system for pgBackRest is now meson. The autoconf/make build will not receive any new features and will be removed after a few releases.  
  
Bug Fixes:  
  
* Skip zero-length files for block incremental delta restore. (Reviewed by Sebastian Krause, René Højbjerg Larsen. Reported by Sebastian Krause.)  
* Fix performance regression in storage list. (Reviewed by Stephen Frost. Reported by Maksym Boguk.)  
* Fix progress logging when file size changes during backup. (Reviewed by Stephen Frost. Reported by samkingno.)  
  
Improvements:  
  
* Improved support for dual stack connections. (Reviewed by Stephen Frost. Suggested by Timothée Peignier.)  
* Make meson the primary build system. (Reviewed by Stephen Frost.)  
* Detect files that have not changed during non-delta incremental backup. (Reviewed by Stephen Frost.)  
* Prevent invalid recovery when backup_label removed. (Reviewed by Stephen Frost.)  
* Improve archive-push WAL segment queue handling. (Reviewed by Stephen Frost.)  
* Limit resume functionality to full backups. (Reviewed by Stephen Frost, Stefan Fercot.)  
* Update resume functionality for block incremental. (Reviewed by Stephen Frost.)  
* Allow --version and --help for version and help. (Reviewed by Greg Sabino Mullane. Suggested by Greg Sabino Mullane.)  
* Add detailed backtrace to autoconf/make build. (Reviewed by Stephen Frost.)  
  
Documentation Improvements:  
  
* Update references to recovery.conf. (Reviewed by Stefan Fercot. Suggested by Stephen Frost.)  

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/2024/2.51.xml
M meson.build
M src/build/configure.ac
M src/configure
M src/version.h
M test/code-count/file-type.yaml

Fix progress logging when file size changes during backup.

commit   : 76956e71cfa3044867213bd65a6f22e96120c108    
  
author   : David Steele <[email protected]>    
date     : Wed, 20 Mar 2024 09:05:39 +1300    
  
committer: GitHub <[email protected]>    
date     : Wed, 20 Mar 2024 09:05:39 +1300    

Click here for diff

If the file size changed during backup then the progress percentage in the log would not be accurate.
  

  
Fix this by using the original size to increment the progress since progress total was calculated from original file sizes.

M doc/xml/release/2024/2.51.xml
M doc/xml/release/contributor.xml
M src/command/backup/backup.c
M test/src/module/command/backupTest.c

Redact secure options in check --report.

commit   : de55902fb3f92758c4784e6fc06a69466e656ec3    
  
author   : David Steele <[email protected]>    
date     : Wed, 13 Mar 2024 12:06:23 +1300    
  
committer: David Steele <[email protected]>    
date     : Wed, 13 Mar 2024 12:06:23 +1300    

Click here for diff

For this to be practically useful secure options must be redacted. Otherwise, no user is likely to share the report.  
  
Since this feature is still internal, there is no real world impact.  

M src/command/check/report.c
M test/src/module/command/checkTest.c

Update resume functionality for block incremental.

commit   : ff47450402fde5ebc64a08d31791551bee52200e    
  
author   : David Steele <[email protected]>    
date     : Tue, 12 Mar 2024 12:41:58 +1300    
  
committer: GitHub <[email protected]>    
date     : Tue, 12 Mar 2024 12:41:58 +1300    

Click here for diff

Resume was not updated for block incremental so block incremental files were always removed during a resume. Resume worked but was very inefficient with block incremental enabled.
  

  
Update resume to preserve block incremental files and add tests.

M doc/xml/release/2024/2.51.xml
M src/command/backup/backup.c
M test/src/module/command/backupTest.c

Prevent invalid recovery when backup_label removed.

commit   : e634fd85cedc1ae3aef7c4fa2556d7d73d05cb8a    
  
author   : David Steele <[email protected]>    
date     : Sun, 10 Mar 2024 17:08:42 +1300    
  
committer: GitHub <[email protected]>    
date     : Sun, 10 Mar 2024 17:08:42 +1300    

Click here for diff

If backup_label is removed from a restored backup then PostgreSQL will instead use checkpoint information from pg_control to attempt (what is thinks is) crash recovery. This will nearly always result in a corrupt cluster because the checkpoint will not be from the beginning of the backup, and even if it is, the end point will not be specified, which could lead to recovery stopping too early.
  

  
To prevent this, invalidate the checkpoint LSN in pg_control on restore. If backup_label is removed then recovery will still fail because PostgreSQL will not be able to find the invalid checkpoint. The LSN of the checkpoint is not logged but it will be visible in pg_controldata output as 0/DEAD. This value is invalid because PostgreSQL always skips the first WAL segment when initializing a cluster.

M doc/xml/release/2024/2.51.xml
M src/command/archive/get/get.c
M src/command/restore/restore.c
M src/postgres/interface.c
M src/postgres/interface.h
M src/postgres/interface/version.intern.h
M test/src/module/command/archiveGetTest.c
M test/src/module/command/restoreTest.c
M test/src/module/postgres/interfaceTest.c

Add validation for WAL segment size in pg_control.

commit   : 960b43589d422a3757535b585e31da03a595ae97    
  
author   : David Steele <[email protected]>    
date     : Sun, 10 Mar 2024 16:17:50 +1300    
  
committer: David Steele <[email protected]>    
date     : Sun, 10 Mar 2024 16:17:50 +1300    

Click here for diff

This serves as an additional sanity check to be sure the pg_control format is as expected. The field is useful for being near the end and containing a limited number of discrete values.  

M src/postgres/interface.c
M src/postgres/interface/static.vendor.h
M test/src/common/harnessPostgres.c
M test/src/module/postgres/interfaceTest.c

Add validation for page checksum version in pg_control.

commit   : 63541b2273360c8c3f181fe0242bd20afb845715    
  
author   : David Steele <[email protected]>    
date     : Sun, 10 Mar 2024 15:50:10 +1300    
  
committer: David Steele <[email protected]>    
date     : Sun, 10 Mar 2024 15:50:10 +1300    

Click here for diff

This serves as an additional sanity check to be sure the pg_control format is as expected. The field is useful for being all the way at the end and being four bytes that can only have one of two values. Something more distinctive than 0 and 1 would be better, but this is what we have to work with.  
  
Convert PgControl.pageChecksum to unsigned int and rename to PgControl.pageChecksumVersion and make all downstream changes required for the new datatype.  

M src/command/backup/backup.c
M src/postgres/interface.c
M src/postgres/interface.h
M src/postgres/interface/static.vendor.h
M src/postgres/interface/version.intern.h
M test/src/common/harnessPostgres/harnessVersion.intern.h
M test/src/module/command/backupTest.c
M test/src/module/command/manifestTest.c
M test/src/module/command/restoreTest.c
M test/src/module/postgres/interfaceTest.c

Improved support for dual stack connections.

commit   : 7448fde157c6d22f57b90c0cef11957b0aadf4b3    
  
author   : David Steele <[email protected]>    
date     : Sun, 10 Mar 2024 11:36:39 +1300    
  
committer: GitHub <[email protected]>    
date     : Sun, 10 Mar 2024 11:36:39 +1300    

Click here for diff

Connections are established using the "happy eyeballs" approach from RFC 8305, i.e. new addresses (if available) are tried if the prior address has already had a reasonable time to connect. This prevents waiting too long on a failed connection but does not try all the addresses at once. Prior connections that are still waiting are rechecked periodically if no subsequent connection is successful.
  

  
This improves substantially on 39bb8a0, which failed to take into account connection attempts that do not fail (but never connect) and use up all the available time.

M doc/xml/release/2024/2.51.xml
M src/common/io/socket/address.c
M src/common/io/socket/address.h
M src/common/io/socket/client.c
M src/common/io/socket/common.c
M src/common/io/socket/common.h
M src/common/io/socket/server.c
M test/define.yaml
M test/src/common/harnessSocket.c
M test/src/common/harnessSocket.h
M test/src/module/common/ioHttpTest.c
M test/src/module/common/ioTlsTest.c

Set function/variable visibility to hidden.

commit   : f287178b705cc90aa887d66c932e2a223029649b    
  
author   : David Steele <[email protected]>    
date     : Sun, 10 Mar 2024 11:09:13 +1300    
  
committer: GitHub <[email protected]>    
date     : Sun, 10 Mar 2024 11:09:13 +1300    

Click here for diff

This saves about 16KiB in the binary and reduces exported symbols by about 75%. All variables are still exported and any functions that are referenced by their pointers or extern'd but never used outside the module where they are defined.
  

  
In addition to modest space savings, this should also increase performance a bit since the compiler can simplify calls to these functions and load the binary should also be a little faster.
  

  
The GCC documentation does not make it clear that visibility can be used with variables, but it certainly makes a difference in the binary size, so something is happening. Other sources on the internet suggest that visibility can be used with variables. Clearly exports are not affected, but there may be some other optimization happening.

M doc/xml/release/2024/2.51.xml
M src/meson.build

Make meson the primary build system.

commit   : e3d9df3ae9669ee5749b970d59f8afeb20fd3d9d    
  
author   : David Steele <[email protected]>    
date     : Sun, 10 Mar 2024 10:53:31 +1300    
  
committer: GitHub <[email protected]>    
date     : Sun, 10 Mar 2024 10:53:31 +1300    

Click here for diff

Meson has a lot of advantages over autoconf/make, primarily in ease-of-use and performance. Make meson the only build system used for testing and building the Debian documentation, but leave the RHEL documentation using autoconf/make for now so it gets some testing.

M .github/workflows/test.yml
M doc/src/meson.build
M doc/xml/release/2024/2.51.xml
M doc/xml/user-guide.xml
M meson_options.txt
M test/ci.pl
M test/lib/pgBackRestTest/Common/JobTest.pm
M test/src/command/test/build.c
M test/src/meson.build
M test/src/module/test/testTest.c
M test/test.pl

Disable arm64 test in CirrusCI.

commit   : c64cd8e01958c3316049d73f403241c136bcf392    
  
author   : David Steele <[email protected]>    
date     : Sun, 10 Mar 2024 10:43:24 +1300    
  
committer: David Steele <[email protected]>    
date     : Sun, 10 Mar 2024 10:43:24 +1300    

Click here for diff

There seems to be a shortage of arm64 hosts because queue times have been steadily increasing over the last few weeks. It can now take several hours to get an arm64 test queued, which makes it difficult to get development done.  
  
Disable for the time being and hope the resource issue gets resolved in the future.  

M .cirrus.yml

Make valgrind libssh2 leak check less specific.

commit   : eda7706f53e925a701f85894ab3d8e861e5fcf06    
  
author   : David Steele <[email protected]>    
date     : Sun, 10 Mar 2024 09:40:13 +1300    
  
committer: David Steele <[email protected]>    
date     : Sun, 10 Mar 2024 09:40:13 +1300    

Click here for diff

The leak kind is usually definite but sometimes flaps to possible. For stability purposes accept any leak kind.  
  
Note that this is a leak in a specific version of libssh2 and not a bug in pgBackRest.  

M test/src/valgrind.suppress.none

Limit resume functionality to full backups.

commit   : dddcbcd8e9a1cae578b0cc5bb2d1aa768330f3c5    
  
author   : David Steele <[email protected]>    
date     : Sun, 10 Mar 2024 09:32:55 +1300    
  
committer: GitHub <[email protected]>    
date     : Sun, 10 Mar 2024 09:32:55 +1300    

Click here for diff

Resume does not work correctly with delta diff/incr backups because the presence of a reference causes it to remove the file with the idea that it can just be referenced again. This is true for timestamp-based backups but for deltas all existing files need to be rechecked (which requires a reference).
  

  
This is fixable but not without significant effort and new tests and it calls into question the usefulness of non-full resumes. For diff/incr, if the file was changed since the prior backup there is a good chance it will be modified again before the resume occurs.
  

  
In order to keep this feature as useful as possible for the most valuable case, limit resumes to full backups.

M doc/xml/release/2024/2.51.xml
M src/command/backup/backup.c
M test/src/module/command/backupTest.c

Detect files that have not changed during non-delta incremental backup.

commit   : 9d91d1b2f817b543fc8d970af56d1442c325ed7c    
  
author   : David Steele <[email protected]>    
date     : Fri, 8 Mar 2024 15:07:43 +1300    
  
committer: GitHub <[email protected]>    
date     : Fri, 8 Mar 2024 15:07:43 +1300    

Click here for diff

02eea55 added code to load a buffer of data from a file being backup up to detect files that have been truncated to zero after manifest generation. This mechanism can also be used to detect files that have not changed since the prior backup.
  

  
If the result of the file copy fits into a single buffer, then the size and checksum can be compared to the prior file before anything gets stored. If the file matches then it is referenced to the file in to prior backup.
  

  
The size that can be compared for normal copies is limited by the buffer size but for block incremental it works with any size file since there is no output from block incremental when the file is identical.

M doc/xml/release/2024/2.51.xml
M src/command/backup/backup.c
M src/command/backup/blockIncr.c
M src/command/backup/file.c
M src/command/backup/file.h
M src/command/backup/protocol.c
M src/info/manifest.c
M src/info/manifest.h
M test/src/module/command/backupTest.c
M test/src/module/info/manifestTest.c

Improve archive-push WAL segment queue handling.

commit   : cf17515e409440eecfb04bf7186790d8baa8ab12    
  
author   : David Steele <[email protected]>    
date     : Fri, 8 Mar 2024 12:34:11 +1300    
  
committer: GitHub <[email protected]>    
date     : Fri, 8 Mar 2024 12:34:11 +1300    

Click here for diff

Infer the size of all WAL segments from the size of the first segment rather than getting info for all segments (up to queue size). If the segments are not the same size then there are larger issues than the WAL queue.

M doc/xml/release/2024/2.51.xml
M src/command/archive/push/push.c
M test/src/module/command/archivePushTest.c

Improve sort comparators.

commit   : 4387250f2e159dc4f762ed4a7f4180eb81db3717    
  
author   : David Steele <[email protected]>    
date     : Fri, 8 Mar 2024 10:07:03 +1300    
  
committer: GitHub <[email protected]>    
date     : Fri, 8 Mar 2024 10:07:03 +1300    

Click here for diff

Improve sort comparators to use branchless comparisons when possible and avoid using subtraction. Only one comparator was using subtraction and it appears there was no overflow risk since the values were pretty small.
  

  
Inspired by https://www.postgresql.org/message-id/CA%2B14426g2Wa9QuUpmakwPxXFWG_1FaY0AsApkvcTBy-YfS6uaw%40mail.gmail.com.

M doc/xml/release/2024/2.51.xml
M src/command/archive/common.c
M src/command/backup/blockMap.c
M src/common/type/list.c
M src/common/type/list.h
M test/src/module/common/typeListTest.c
M test/src/module/performance/typeTest.c

Fix performance regression in storage list.

commit   : e00bfe2d2c3f124b2883e3c2d169a2ce506a1e98    
  
author   : David Steele <[email protected]>    
date     : Fri, 8 Mar 2024 09:50:20 +1300    
  
committer: GitHub <[email protected]>    
date     : Fri, 8 Mar 2024 09:50:20 +1300    

Click here for diff

storageListP() returns a list of entries in a path and should not need to stat/head, etc. in order to get more detailed info. This was broken by 75623d4 which failed to set the level correctly.
  

  
Set the correct level and update tests.
  

  
There's no easy way to directly test for a regression here but the SFTP tests will fail if more detailed info is requested since it would require script changes.

M doc/xml/release/2024/2.51.xml
M doc/xml/release/contributor.xml
M src/storage/storage.c
M test/src/module/storage/posixTest.c
M test/src/module/storage/sftpTest.c

Migrate integration tests to C.

commit   : 794c5771305bfce6298ee529df682d3a873f6f7d    
  
author   : David Steele <[email protected]>    
date     : Wed, 6 Mar 2024 11:00:09 +1300    
  
committer: David Steele <[email protected]>    
date     : Wed, 6 Mar 2024 11:00:09 +1300    

Click here for diff

The Perl integration tests were migrated as faithfully as possible, but there was some cruft and a few unit tests that it did not make sense to migrate.  
  
Also remove all Perl code made obsolete by this migration.  
  
All unit, performance, and integration tests are now written in C but significant parts of the test harness remain to be migrated.  

M .github/workflows/test.yml
M doc/lib/pgBackRestDoc/Common/DocExecute.pm
R099 test/lib/pgBackRestTest/Common/HostTest.pm doc/lib/pgBackRestDoc/Common/Host.pm
R096 test/lib/pgBackRestTest/Common/HostGroupTest.pm doc/lib/pgBackRestDoc/Common/HostGroup.pm
M src/build/common/exec.c
M src/build/common/exec.h
M test/certificate/pgbackrest-test-server.cnf
M test/certificate/pgbackrest-test-server.crt
M test/ci.pl
M test/define.yaml
M test/lib/pgBackRestTest/Common/CoverageTest.pm
D test/lib/pgBackRestTest/Common/FileTest.pm
M test/lib/pgBackRestTest/Common/JobTest.pm
D test/lib/pgBackRestTest/Common/RunTest.pm
D test/lib/pgBackRestTest/Common/StorageRepo.pm
D test/lib/pgBackRestTest/Env/ArchiveInfo.pm
D test/lib/pgBackRestTest/Env/BackupInfo.pm
D test/lib/pgBackRestTest/Env/ExpireEnvTest.pm
D test/lib/pgBackRestTest/Env/Host/HostAzureTest.pm
D test/lib/pgBackRestTest/Env/Host/HostBackupTest.pm
D test/lib/pgBackRestTest/Env/Host/HostBaseTest.pm
D test/lib/pgBackRestTest/Env/Host/HostDbCommonTest.pm
D test/lib/pgBackRestTest/Env/Host/HostDbSyntheticTest.pm
D test/lib/pgBackRestTest/Env/Host/HostDbTest.pm
D test/lib/pgBackRestTest/Env/Host/HostGcsTest.pm
D test/lib/pgBackRestTest/Env/Host/HostS3Test.pm
D test/lib/pgBackRestTest/Env/Host/HostSftpTest.pm
D test/lib/pgBackRestTest/Env/HostEnvTest.pm
D test/lib/pgBackRestTest/Env/InfoCommon.pm
D test/lib/pgBackRestTest/Env/Manifest.pm
D test/lib/pgBackRestTest/Module/Real/RealAllTest.pm
M test/src/build/config/config.yaml
M test/src/build/help/help.xml
M test/src/command/test/build.c
M test/src/command/test/build.h
M test/src/command/test/define.c
M test/src/command/test/define.h
M test/src/command/test/test.c
M test/src/command/test/test.h
A test/src/common/harnessHost.c
A test/src/common/harnessHost.h
M test/src/common/harnessTest.c
M test/src/common/harnessTest.h
M test/src/common/harnessTest.intern.h
M test/src/main.c
M test/src/module/common/execTest.c
A test/src/module/integration/allTest.c
M test/src/module/test/testTest.c
M test/src/test.c
A test/src/valgrind.suppress.none
M test/test.pl

Remove obsolete valgrind suppression.

commit   : 7f1bb3a051077d8af2bcadfb261c873b1bdcea9f    
  
author   : David Steele <[email protected]>    
date     : Tue, 5 Mar 2024 17:45:25 +1300    
  
committer: David Steele <[email protected]>    
date     : Tue, 5 Mar 2024 17:45:25 +1300    

Click here for diff

D test/src/valgrind.suppress.co7

Move assert in cmdServerSigChild().

commit   : cb58bdc9752e720687e594fa953e1b4a93b8defe    
  
author   : David Steele <[email protected]>    
date     : Mon, 4 Mar 2024 18:57:19 +1300    
  
committer: David Steele <[email protected]>    
date     : Mon, 4 Mar 2024 18:57:19 +1300    

Click here for diff

It is possible for the server to receive notifications for children that were not spawned by it, e.g. when running as the root process of a container.  
  
Only assert when the child process is found in our process list. Otherwise, the code may be something unexpected.  
  
Since this is an assert there should not be any real world consequences either way, but the issue has caused problems in testing.  

M src/command/server/server.c

Update Cirrus CI BSD image to 13.3.

commit   : 07051347fb8723ef1c6f951b17bcddb8fa0d8fcf    
  
author   : David Steele <[email protected]>    
date     : Mon, 4 Mar 2024 18:14:41 +1300    
  
committer: David Steele <[email protected]>    
date     : Mon, 4 Mar 2024 18:14:41 +1300    

Click here for diff

M .cirrus.yml

Skip zero-length files for block incremental delta restore.

commit   : f7a7ab16c9652179945717ebf9b68af3aa8a0b0e    
  
author   : David Steele <[email protected]>    
date     : Sat, 2 Mar 2024 12:29:10 +1300    
  
committer: GitHub <[email protected]>    
date     : Sat, 2 Mar 2024 12:29:10 +1300    

Click here for diff

a42614e introduced the capability to preserve smaller than expected files for block incremental restore delta, but failed to take into account that zero-length files are both useless and cause the block checksum filter to error.
  

  
Fix this by skipping zero-length files during block incremental restore delta.

M doc/xml/release/2024/2.51.xml
M doc/xml/release/contributor.xml
M src/command/restore/file.c
M test/src/module/command/restoreTest.c

Add execOne() to simplify exec for build, documentation, and testing.

commit   : 6c45b57fa8eef0f570abb1ac216ac43e0acf314a    
  
author   : David Steele <[email protected]>    
date     : Sat, 24 Feb 2024 11:22:48 +1300    
  
committer: David Steele <[email protected]>    
date     : Sat, 24 Feb 2024 11:22:48 +1300    

Click here for diff

The core Exec object is efficient but geared toward the specific needs of core and not ease-of-use as required for build, documentation, and testing.  
  
execOne() works similarly to system() except that it automatically redirects stderr to stdout and captures the output.  

A src/build/common/exec.c
A src/build/common/exec.h
M src/common/exec.c
M src/common/exec.h
M test/define.yaml
M test/src/command/test/test.c
M test/src/meson.build
M test/src/module/common/execTest.c
M test/src/module/protocol/protocolTest.c
M test/src/module/test/testTest.c

Disable log expect testing for non-unit tests.

commit   : 6356a2b76c8f22dc0b3e1a0349b7f1f0cf1b65ae    
  
author   : David Steele <[email protected]>    
date     : Sat, 17 Feb 2024 19:16:39 +1300    
  
committer: David Steele <[email protected]>    
date     : Sat, 17 Feb 2024 19:16:39 +1300    

Click here for diff

This has never been a problem for performance tests since they do not call functions that log at info level or above, but the upcoming integration tests may do so. In any case it is better to disable this functionality outside of unit tests.  

M test/lib/pgBackRestTest/Common/JobTest.pm
M test/src/command/test/build.c
M test/src/common/harnessTest.c
M test/src/common/harnessTest.intern.h
M test/src/module/test/testTest.c
M test/src/test.c

Remove mock integration tests.

commit   : d41b21c8f70aa6ce7a39aeaddbbacafda51c609d    
  
author   : David Steele <[email protected]>    
date     : Sat, 17 Feb 2024 10:52:37 +1300    
  
committer: David Steele <[email protected]>    
date     : Sat, 17 Feb 2024 10:52:37 +1300    

Click here for diff

These tests have not been maintained for several years, i.e. no tests for new features have been added. They are highly duplicative of the unit tests but do have the advantage of mixing in different storage drivers. They were allowed to remain because they were not doing any harm even if they were probably not doing any good.  
  
However, the real integration tests (that run directly against PostgreSQL) also test storage drivers and have been updated with new features over time. The real integration tests are now being migrated to C and as part of that effort the mock integration tests need to be removed or migrated, and they do not provide enough value to migrate.  
  
Remove all mock integration tests and a leftover Perl performance test.  

M CONTRIBUTING.md
M doc/xml/contributing.xml
M test/define.yaml
D test/lib/pgBackRestTest/Module/Mock/MockAllTest.pm
D test/lib/pgBackRestTest/Module/Mock/MockArchiveStopTest.pm
D test/lib/pgBackRestTest/Module/Mock/MockArchiveTest.pm
D test/lib/pgBackRestTest/Module/Mock/MockExpireTest.pm
D test/lib/pgBackRestTest/Module/Mock/MockStanzaTest.pm
D test/lib/pgBackRestTest/Module/Performance/PerformanceArchivePerlTest.pm

Update references to recovery.conf.

commit   : 68351785f6816a23526900db595557cf6e3a0056    
  
author   : David Steele <[email protected]>    
date     : Fri, 16 Feb 2024 11:37:31 +1300    
  
committer: GitHub <[email protected]>    
date     : Fri, 16 Feb 2024 11:37:31 +1300    

Click here for diff

Update references to recovery.conf to include postgresql.auto.conf used in newer versions.
  

  
Also update a broken recovery URL and point it to the current version (with a hint to select the proper version of PostgreSQL).

M doc/xml/release/2024/2.51.xml
M src/build/help/help.xml
M test/src/module/command/helpTest.c

Add asserts to default switch cases in common/type/variant module.

commit   : 273d5050f8bd74869408d9570a35761ba5de75f1    
  
author   : David Steele <[email protected]>    
date     : Wed, 7 Feb 2024 11:01:55 -0300    
  
committer: David Steele <[email protected]>    
date     : Wed, 7 Feb 2024 11:01:55 -0300    

Click here for diff

This matches how switch is used in other parts of the code and prevents invalid values from being processed normally.  

M src/common/type/variant.c

Remove unneeded backupTimeStart parameter from testBackupValidate().

commit   : ad8e92a9ac23a0123a080dafe6b83f0b71a22441    
  
author   : David Steele <[email protected]>    
date     : Mon, 5 Feb 2024 10:10:59 -0300    
  
committer: David Steele <[email protected]>    
date     : Mon, 5 Feb 2024 10:10:59 -0300    

Click here for diff

5ce8b9df added this parameter, but it is better to get the value from the manifest, which is already present.  

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

Add release instructions to update PostgreSQL ecosystem wiki.

commit   : 45f070aa9a221c6f862ff6ccb4ff011bfa6c3888    
  
author   : David Steele <[email protected]>    
date     : Thu, 25 Jan 2024 10:41:20 -0300    
  
committer: David Steele <[email protected]>    
date     : Thu, 25 Jan 2024 10:41:20 -0300    

Click here for diff

M doc/RELEASE.md

Simplify output in command/backup unit tests.

commit   : 5ce8b9dfae984a9a40c44282a59936da5c3dfbd9    
  
author   : David Steele <[email protected]>    
date     : Wed, 24 Jan 2024 14:54:28 -0300    
  
committer: David Steele <[email protected]>    
date     : Wed, 24 Jan 2024 14:54:28 -0300    

Click here for diff

The output combined a representation of the files/paths/links in the manifest along with output of what was validated on disk. This was redundant and made maintenance of the tests difficult, especially with all the quoting in the manifest output (which also made it hard to search for output).  
  
Instead use primarily the output created during validation and add fields from the manifest that were missing. Exclude paths from the output when there are files in the path since the path is then implied.  
  
One major change here is that checksums are no longer output. This makes it easier to write tests that work on multiple architectures and all checksums are already verified during validation.  

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

Migrate man page generation to C.

commit   : 1a0cc96c5a58cea2a21b8754909c6a2b824c3f9e    
  
author   : David Steele <[email protected]>    
date     : Tue, 23 Jan 2024 09:56:26 -0300    
  
committer: David Steele <[email protected]>    
date     : Tue, 23 Jan 2024 09:56:26 -0300    

Click here for diff

M doc/doc.pl
M doc/lib/pgBackRestDoc/Common/DocConfig.pm
M doc/src/command/build/build.c
A doc/src/command/build/man.c
A doc/src/command/build/man.h
M doc/src/meson.build
M src/build/help/render.c
M src/build/help/render.h
M src/command/help/help.c
M src/command/help/help.h
M test/define.yaml
M test/src/module/doc/buildTest.c

Add detailed backtrace to autoconf/make build.

commit   : 676700d8ca6f2e0e0ab8123aa9606c8ec7aa81ae    
  
author   : David Steele <[email protected]>    
date     : Mon, 22 Jan 2024 14:17:09 -0300    
  
committer: GitHub <[email protected]>    
date     : Mon, 22 Jan 2024 14:17:09 -0300    

Click here for diff

c8264291 added libbacktrace to the meson build (not used in production yet), but held off on adding it to autoconf/make before more performance testing was done.
  

  
Performance tests show there is no noticeable cost to adding libbacktrace, so add it to get more detail error stack traces.

M doc/xml/release/2024/2.51.xml
M src/build.auto.h.in
M src/build/configure.ac
M src/configure

Fix help not displaying help for the help command.

commit   : 0aaa0772f56d59178518377b33b3e3d02f0f5483    
  
author   : David Steele <[email protected]>    
date     : Mon, 22 Jan 2024 12:33:40 -0300    
  
committer: David Steele <[email protected]>    
date     : Mon, 22 Jan 2024 12:33:40 -0300    

Click here for diff

'pgbackrest help help' just displayed the help overview, rather than display help for the help command.  
  
Fix this by making sure the command is set and routing correctly in the help command.  

M src/command/help/help.c
M src/config/parse.c
M test/src/module/config/loadTest.c
M test/src/module/config/parseTest.c

Allow --version and --help for version and help.

commit   : 68db3075d7ac4a48377967ad54e45b95b9ee6c61    
  
author   : David Steele <[email protected]>    
date     : Mon, 22 Jan 2024 12:00:13 -0300    
  
committer: GitHub <[email protected]>    
date     : Mon, 22 Jan 2024 12:00:13 -0300    

Click here for diff

It is a bit confusing that --help and --version do not work like most command-line programs. For example, git allows either --help or help.
  

  
Make these work by making them shortcuts (not actual options) to the applicable commands.
  

  
The user will still need to use help (not --help) to get help on specific commands/options, but at least they can get to the main help (which will tell them this) via --help.

M doc/xml/release/2024/2.51.xml
M src/config/parse.c
M test/src/module/config/parseTest.c

Update config.guess and config.sub to latest versions.

commit   : db5bcff3b443833dce6ba0f10ce4293d65f0f436    
  
author   : David Steele <[email protected]>    
date     : Mon, 22 Jan 2024 10:11:48 -0300    
  
committer: David Steele <[email protected]>    
date     : Mon, 22 Jan 2024 10:11:48 -0300    

Click here for diff

M src/build/config.guess
M src/build/config.sub

Begin v2.51 development.

commit   : c618fd3b09fab8cde44ad8e5fe0cb984c1bc76d4    
  
author   : David Steele <[email protected]>    
date     : Mon, 22 Jan 2024 10:09:38 -0300    
  
committer: David Steele <[email protected]>    
date     : Mon, 22 Jan 2024 10:09:38 -0300    

Click here for diff

M doc/resource/git-history.cache
M doc/xml/release.xml
A doc/xml/release/2024/2.51.xml
M meson.build
M src/build/configure.ac
M src/configure
M src/version.h
M test/code-count/file-type.yaml