1
0
mirror of https://github.com/pgbackrest/pgbackrest.git synced 2024-12-14 10:13:05 +02:00
pgbackrest/test
David Steele df8cbc91c3
Protocol command multiplexing.
Previously it was not possible to read or write two files at the same time on the same remote because the protocol was entirely taken over by the read or write command. Multiple reads are required to make restores efficient when a list of bundled files is being read but blocks need to be retrieved from a separate file or a different part of the same file.

Improve that situation with sessions that allow related commands to be run with shared state. Also break read/write into separate requests (rather than pushing all data at once) so they can be multiplexed.

The disadvantage for read/write is that they now require more back and forth to transfer a file. This is mitigated by sending asynchronous read/write requests to keep both server and client as busy as possible. Reads that can fit into a single buffer are optimized to transfer in a single command. Reads that transfer the entire file can also skip the close command since it is implicit on end-of-file.

These changes allow the protocol to be simplified to provide one response per request, which makes the data end message obsolete. Any data sent for the request is now added to the parameters so no data needs to be sent separately to the server outside the request parameters.

Also update the Db protocol to use the new sessions. Previously this code had tracked its own sessions.
2024-07-22 11:48:32 +07:00
..
certificate Support IP-based SANs for TLS certificate validation. 2024-07-11 10:54:20 +07:00
code-count Protocol command multiplexing. 2024-07-22 11:48:32 +07:00
data Remove test data files made obsolete by d41b21c8. 2024-03-30 10:43:05 +11:00
lib/pgBackRestTest/Common Update EOL Debian 10 to Debian 11/Ubuntu 20.04 in CI. 2024-07-15 11:53:57 +07:00
src Protocol command multiplexing. 2024-07-22 11:48:32 +07:00
.gitignore Move coverage results to test/result. 2020-03-14 15:29:42 -04:00
ci.pl Migrate CentOS 7 integration tests to Rocky 8. 2024-06-11 15:20:04 +10:00
container.yaml Update EOL Debian 10 to Debian 11/Ubuntu 20.04 in CI. 2024-07-15 11:53:57 +07:00
define.yaml Protocol command multiplexing. 2024-07-22 11:48:32 +07:00
Dockerfile Migrate coverage testing to C and remove dependency on lcov. 2024-05-31 14:52:07 +10:00
test.pl Auto-generate code before building test binary. 2024-07-09 10:48:27 +07:00
uncrustify.cfg Check for stray execute permissions in test.pl --code-format. 2023-02-01 12:57:04 +07:00
Vagrantfile Migrate coverage testing to C and remove dependency on lcov. 2024-05-31 14:52:07 +10:00