## 2.04 2018-07-05

Critical Bug Fix for Backup Resume

IMPORTANT NOTE: This release fixes a critical bug in the backup resume feature. All resumed backups prior to this release should be considered inconsistent. A backup will be resumed after a prior backup fails, unless resume=n has been specified. A resumed backup can be identified by checking the backup log for the message aborted backup of same type exists, will be cleaned to remove invalid files and resumed. If the message exists, do not use this backup or any backup in the same set for a restore and check the restore logs to see if a resumed backup was restored. If so, there may be inconsistent data in the cluster.

Fix critical bug in resume that resulted in inconsistent backups.

A regression in v0.82 removed the timestamp comparison when deciding which files from the aborted backup to keep on resume. See note above for more details.

Fix error in selective restore when only one user database exists in the cluster.

Fix non-compliant ISO-8601 timestamp format in S3 authorization headers.

AWS and some gateways were tolerant of space rather than zero-padded hours while others were not.

11 Beta 2 support.

Improve the HTTP client to set content-length to 0 when not specified by the server.

S3 (and gateways) always set content-length or transfer-encoding but HTTP 1.1 does not require it and proxies (e.g. HAProxy) may not include either.

Set `search_path = 'pg_catalog'` on connections.

Move cryptographic hash functions to C using OpenSSL.

Split log levels into separate header file. Many modules that use `debug.h` do not need to do logging so this reduces dependencies for those modules.

Auto-generate Makefile with dependencies.

Rename `cipher` module to the more general `crypto`.

Update Debian package to add debug symbols to executable.

Convert the not very portable `uint` type to `unsigned int`.

Create a new section to describe building and build on a separate host.

Add sample S3 policy to restrict bucket privileges.

Fix default location of pgbackrest.conf in option reference.

Preliminary documentation for 11 unprivileged user backup.

Remove call to lscpu which can vary widely by build host.

Build containers from scratch for more accurate testing. Use a prebuilt s3 server container.

Document generator improvements. Allow parameters to be passed when a container is created. Allow /etc/hosts update to be skipped (for containers without bash). Allow environment load to be skipped. Allow bash wrapping to be skipped. Allow forcing a command to run as a user without sudo. Allow an entire execute list to be hidden.

Add zero-length file to mock/all test.

Update primary test environment (Vagrant and Docker) to Ubuntu 18.04.

Improve efficiency of C library builds now that they are used only for testing.

Remove RHEL and Debian package patches since they have been committed upstream.

Update parameters for VBoxService start.

Make ls ordering deterministic in mock/all test.