pgBackRest 2.63 commit log

v2.57.0: Suppress Repository Symlinks

commit   : d9773a31c97077761ee8e7d06e073b0b0734e26f    
  
author   : David Steele <david@pgbackrest.org>    
date     : Sat, 18 Oct 2025 11:07:36 +0200    
  
committer: David Steele <david@pgbackrest.org>    
date     : Sat, 18 Oct 2025 11:07:36 +0200    

Click here for diff

Bug Fixes:  
  
* Unnest HTTP/TLS/socket timeouts. (Reviewed by David Christensen.)  
* Fix possible segfault in page checksum error message. (Fixed by Zsolt Parragi. Reviewed by David Steele.)  
  
Features:  
  
* Add repo-symlink option to suppress creation of repository symlinks. (Reviewed by Douglas J Hunley. Suggested by Ron Johnson.)  
  
Improvements:  
  
* Add HTTP retries for 408 and 429 errors. (Reviewed by David Christensen.)  

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/2025/2.57.0.xml
M meson.build
M src/version.h

commit   : bfd97907311a25ed239798691cff52cf73acdb83    
  
author   : David Steele <david@pgbackrest.org>    
date     : Mon, 13 Oct 2025 11:20:18 +0200    
  
committer: GitHub <noreply@github.com>    
date     : Mon, 13 Oct 2025 11:20:18 +0200    

Click here for diff

Some otherwise Posix-compatible filesystems do not support symlinks. To support this allow symlinks to be disabled.

M doc/xml/release/2025/2.57.0.xml
M doc/xml/release/contributor.xml
M src/build/config/config.yaml
M src/build/help/help.xml
M src/config/config.auto.h
M src/config/parse.auto.c.inc
M src/storage/cifs/storage.c
M src/storage/helper.c
M src/storage/posix/storage.c
M src/storage/posix/storage.h
M src/storage/posix/storage.intern.h
M test/src/module/command/backupTest.c
M test/src/module/storage/posixTest.c

Update release note for PostgreSQL 18 experimental support.

commit   : 4767f16214073f251c794113378f2c7b927eca02    
  
author   : David Steele <david@pgbackrest.org>    
date     : Tue, 7 Oct 2025 18:36:36 +0200    
  
committer: David Steele <david@pgbackrest.org>    
date     : Tue, 7 Oct 2025 18:36:36 +0200    

Click here for diff

Nothing changed in PostgreSQL before 18.0 so the support is no longer experimental.  

M doc/xml/release/2025/2.55.0.xml

Remove no longer used GLUE() macro.

commit   : b8ed84f7543e9b278c4fea58df9b6998a3c91eb3    
  
author   : David Steele <david@pgbackrest.org>    
date     : Sun, 5 Oct 2025 12:42:42 +0200    
  
committer: David Steele <david@pgbackrest.org>    
date     : Sun, 5 Oct 2025 12:42:42 +0200    

Click here for diff

M src/common/macro.h

Use FN_NO_RETURN macro consistently in tests.

commit   : b4e3d213635b0078447dd6814f3e32474d0c41db    
  
author   : David Steele <david@pgbackrest.org>    
date     : Sun, 5 Oct 2025 12:32:06 +0200    
  
committer: David Steele <david@pgbackrest.org>    
date     : Sun, 5 Oct 2025 12:32:06 +0200    

Click here for diff

These cases were either missed in 0dabf88e or added afterwards.  

M test/src/common/harnessError.h
M test/src/module/protocol/protocolTest.c

Allow multi-architecture tests to continue if one fails.

commit   : a451ed22f49fe0a5bb730c3d7e08585cf14dafe0    
  
author   : David Steele <david@pgbackrest.org>    
date     : Sat, 4 Oct 2025 13:49:54 +0200    
  
committer: David Steele <david@pgbackrest.org>    
date     : Sat, 4 Oct 2025 13:49:54 +0200    

Click here for diff

M .github/workflows/test.yml

Improve support for multi-architecture builds.

commit   : 24802a08b4a306becb6792f26c9cd8601b57ae5b    
  
author   : David Steele <david@pgbackrest.org>    
date     : Sat, 4 Oct 2025 13:34:53 +0200    
  
committer: David Steele <david@pgbackrest.org>    
date     : Sat, 4 Oct 2025 13:34:53 +0200    

Click here for diff

On recent versions of Docker it is not necessary to specify the architecture of the require image. The --platform option takes care of it.  
  
Rebuild test images that were modified by this change.  

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

Move aarch64 test to Github Actions.

commit   : 96b4b474ce11f7c624a734f662d2399d5b30f800    
  
author   : David Steele <david@pgbackrest.org>    
date     : Sat, 4 Oct 2025 11:49:38 +0200    
  
committer: David Steele <david@pgbackrest.org>    
date     : Sat, 4 Oct 2025 11:49:38 +0200    

Click here for diff

This test was removed in c64cd8e0 because it was taking too long to be scheduled, which held up testing.  
  
Now that Github Actions supports aarch64 move the test there.  

M .cirrus.yml
M .github/workflows/test.yml
M test/container.yaml

Finalize catalog number for PostgreSQL 18 release.

commit   : 5f55f7c1b1c025d3b20478e5a130dc04291d8a4c    
  
author   : David Steele <david@pgbackrest.org>    
date     : Fri, 26 Sep 2025 11:10:53 +0200    
  
committer: David Steele <david@pgbackrest.org>    
date     : Fri, 26 Sep 2025 11:10:53 +0200    

Click here for diff

M src/build/postgres/postgres.yaml
M src/postgres/interface/version.vendor.h
M test/container.yaml
M test/lib/pgBackRestTest/Common/ContainerTest.pm
M test/src/module/postgres/interfaceTest.c

Fix possible segfault in backup resume messages.

commit   : c1c40a4a851efe98be83aca2044c02fd1c7fb2ae    
  
author   : David Steele <david@pgbackrest.org>    
date     : Fri, 26 Sep 2025 09:21:50 +0200    
  
committer: David Steele <david@pgbackrest.org>    
date     : Fri, 26 Sep 2025 09:21:50 +0200    

Click here for diff

Similar to adc5e5b23, STRDEF assignment to reason can be out of scope, which may lead to either garbage in the log message or a crash with SIGSEGV.  
  
Fix by using simple char * constants for the reason.  

M src/command/backup/backup.c

Fix errant STRDEF() in command/backup unit test.

commit   : 76ee6861fb3523790fb473c4d49d5ea9efeca2be    
  
author   : David Steele <david@pgbackrest.org>    
date     : Tue, 16 Sep 2025 20:38:02 +0200    
  
committer: David Steele <david@pgbackrest.org>    
date     : Tue, 16 Sep 2025 20:38:02 +0200    

Click here for diff

Use strNewZ() so the value persists past the block where it is assigned.  

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

Remove unused pathSync parameter in SFTP storage driver.

commit   : 5cc9d25817f48dcfc9a907c43e1d97d347711da7    
  
author   : David Steele <david@pgbackrest.org>    
date     : Tue, 16 Sep 2025 14:58:49 +0200    
  
committer: David Steele <david@pgbackrest.org>    
date     : Tue, 16 Sep 2025 14:58:49 +0200    

Click here for diff

The SFTP storage driver did not set the pathSync method but had logic to see if pathSync was set. This led to some tortured tests since pathSync had to be injected into the interface after the storage object had been created.  
  
Remove the pathSync parameter from storageWriteSftpNew() and also remove related tests.  

M src/storage/sftp/storage.c
M src/storage/sftp/write.c
M src/storage/sftp/write.h
M test/src/module/storage/sftpTest.c

Unnest HTTP/TLS/socket timeouts.

commit   : 9c7f0648648e651d82918e5dbfc3d511abee3298    
  
author   : David Steele <david@pgbackrest.org>    
date     : Fri, 5 Sep 2025 11:42:00 -0400    
  
committer: GitHub <noreply@github.com>    
date     : Fri, 5 Sep 2025 11:42:00 -0400    

Click here for diff

These timeouts were nested, i.e. an error in the socket connection would also retry in the TLS and HTTP layers. This led to a multiplying effect such that it took nine minutes to fully timeout with the default io-timeout of 60 seconds.  
  
A fix for this was attempted in 5314dbff but it reduced retries by too much and had to be reverted in fa5b2d44.  
  
Instead fix by moving connection attempts to the lower layer (e.g. TLS -> socket) out of the exception block but leave it within the retry loop. So, for example, if the socket connection fails after retries then the error will not be retried by TLS. But if the TLS session fails the socket will be reconnected.

M doc/xml/release/2025/2.57.0.xml
M src/common/io/http/request.c
M src/common/io/tls/client.c
M test/src/common/harnessServer.c
M test/src/common/harnessServer.h
M test/src/module/common/ioHttpTest.c
M test/src/module/common/ioTlsTest.c

Fix possible segfault in page checksum error message.

commit   : adc5e5b23b9b544745724a7eaa0461b88b691e36    
  
author   : Zsolt Parragi <zsolt.parragi@cancellar.hu>    
date     : Mon, 25 Aug 2025 17:51:54 +0200    
  
committer: GitHub <noreply@github.com>    
date     : Mon, 25 Aug 2025 17:51:54 +0200    

Click here for diff

The STRDEF definition of plural is out of scope in the error message just below it, which may lead to either garbage in the log message or a crash with SIGSEGV.  
  
This is particularly visible with pg_tde, which encrypts tables: if pgbackrest is run with checksum enabled, it tries to emit this message for all encrypted files.  
  
Fix by using simple char * constants in the error message.

M doc/xml/release/2025/2.57.0.xml
M doc/xml/release/contributor.xml
M src/command/backup/backup.c

Fix comment typo.

commit   : 779cb763afa6fc8e7e6b92ef8c2c64ee1c1b2c2e    
  
author   : David Steele <david@pgbackrest.org>    
date     : Sat, 23 Aug 2025 14:23:30 -0400    
  
committer: David Steele <david@pgbackrest.org>    
date     : Sat, 23 Aug 2025 14:23:30 -0400    

Click here for diff

M src/storage/helper.c

New CI container build for PostgreSQL 18 beta3.

commit   : 5de5ed842a21f4fb7c7f7e9c94650e18dcae96d5    
  
author   : David Steele <david@pgbackrest.org>    
date     : Sat, 23 Aug 2025 11:40:34 -0400    
  
committer: David Steele <david@pgbackrest.org>    
date     : Sat, 23 Aug 2025 11:40:34 -0400    

Click here for diff

Rebuild all containers to get the most recent versions of PostgreSQL.  
  
Update the Debian repository install to match current recommendations. This has already been done for the documentation in fcd00a45.  

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

Add HTTP retries for 408 and 429 errors.

commit   : 87339004e59c03d2a03a6ceb8426202346849c37    
  
author   : David Steele <david@pgbackrest.org>    
date     : Wed, 13 Aug 2025 10:12:29 -0400    
  
committer: GitHub <noreply@github.com>    
date     : Wed, 13 Aug 2025 10:12:29 -0400    

Click here for diff

HTTP client errors 408 and 429 were not being retried but there seems to be some benefit to doing so.  
  
408 has only been seen once and in that case the server was returning 400 (with Request Timeout in the response body) but it seems worth doing since this could happen during times of high congestion. Requests are not sent until request content is ready so there is not much else to be done to handle this error.  
  
429 has been seen occasionally in the past but now seems to be common on Cloudflare R2. Ideally we would have a large initial back off here but it is not clear that is worth it at this time. The existing Fibonacci back off should be enough to allow operations to proceed if possible during the configured timeout.

M doc/xml/release/2025/2.57.0.xml
M src/common/io/http/request.c
M src/common/io/http/response.c
M src/common/io/http/response.h
M test/src/module/common/ioHttpTest.c

Update user guide and tests to Ubuntu 22.04.

commit   : fcd00a45f50d03b3e61ce28cd0ee622c05c65fbd    
  
author   : David Steele <david@pgbackrest.org>    
date     : Mon, 4 Aug 2025 17:42:16 -0400    
  
committer: David Steele <david@pgbackrest.org>    
date     : Mon, 4 Aug 2025 17:42:16 -0400    

Click here for diff

20.04 is EOL so update the user guide and tests to 22.04.  
  
The contributing guide was updated to 22.04 in d55836e7e.  

M .cirrus.yml
M .github/workflows/test.yml
M doc/release.pl
M doc/xml/user-guide.xml
M test/container.yaml
M test/lib/pgBackRestTest/Common/ContainerTest.pm
M test/lib/pgBackRestTest/Common/VmTest.pm
M test/src/valgrind.suppress.none

Begin v2.57.0 development.

commit   : 03cabe2644a6233392671c80d88726737b1bb0fe    
  
author   : David Steele <david@pgbackrest.org>    
date     : Mon, 21 Jul 2025 13:08:40 -0400    
  
committer: David Steele <david@pgbackrest.org>    
date     : Mon, 21 Jul 2025 13:08:40 -0400    

Click here for diff

M doc/resource/git-history.cache
M doc/xml/release.xml
A doc/xml/release/2025/2.57.0.xml
M meson.build
M src/version.h
M test/code-count/file-type.yaml