David Steele
8e9e97728c
Remove --smart from --expect tests.
...
This ensures that new binaries are built before running the tests.
2018-03-19 17:38:44 -04:00
David Steele
2c1687721e
Fix issue where specifying log-level-stderr > warn would cause a local/remote process to error on exit due to output found on stderr when none was expected.
...
The max value for a local/remote process is now error since there's no reason for these processes to emit warnings.
Reported by Clinton Adams.
2018-03-19 13:08:42 -04:00
David Steele
0c313713b1
Use clang for static code analysis during lint testing.
...
Nothing found except for some functions that should have been marked __noreturn__.
2018-03-18 13:32:19 -04:00
David Steele
f0451c1494
Enable -Wformat=2 and -Wformat-nonliteral and silence new warnings.
2018-03-15 13:53:03 -04:00
David Steele
8a1ce42c30
Immediately error when a secure option (e.g. repo1-s3-key) is passed on the command line.
...
Since pgBackRest would not pass secure options on to sub-processes an obscure error was thrown. The new error is much clearer and provides hints about how to fix the problem.
Update command documentation to omit secure options that cannot be specified on the command-line.
Reported by Brad Nicholson.
2018-03-15 12:02:09 -04:00
David Steele
dd3ce70810
Config test code writes secure options to a file instead of passing on the command-line.
2018-03-15 11:09:46 -04:00
David Steele
4fb75c9cc1
Improve conversion of C exceptions to Exception objects.
...
Colons in the message would prevent all of the message from being loaded into the Exception object.
2018-03-15 11:03:28 -04:00
David Steele
599e291b36
Check int size in common/type.h.
...
This ensures that integers are at least 32-bits without having to run the test suite.
2018-03-14 14:34:06 -04:00
David Steele
e7fd94ee23
Simplify table of contents on command page by only listing commands.
...
Suggested by Stephen Frost.
2018-03-14 11:10:46 -04:00
David Steele
4b6cd92a4c
Improve debugging.
...
* Replace remaining NDEBUG blocks with the more granular DEBUG_UNIT.
* Remove some debug memset() calls in MemContext since valgrind is more useful for these checks.
2018-03-12 17:15:14 -04:00
David Steele
cced6ec03a
Add ASSERT_DEBUG() macro for debugging.
...
Replace all current assert() calls except in tests that can't use the debug code.
2018-03-12 14:31:22 -04:00
Cynthia Shang
dd31ae832d
Port most of Config::Config::configLoad() from Perl to C.
...
Contributed by Cynthia Shang.
2018-03-12 11:25:20 -04:00
David Steele
03f1082e86
Improve logging.
...
Move command begin to C except when it must be called after another command in Perl (e.g. expire after backup). Command begin logs correctly for complex data types like hash and list. Specify which commands will log to file immediately and set the default log level for log messages that are common to all commands. File logging is initiated from C.
2018-03-12 11:03:38 -04:00
David Steele
94494a632f
Update pip before installing awscli.
2018-03-12 11:02:46 -04:00
David Steele
f047cd0dfd
Improve code generation performance.
2018-03-09 23:00:20 -05:00
David Steele
b987f05f35
Improve bin and libc build performance.
2018-03-09 21:24:30 -05:00
David Steele
c32ee34612
Build with -DNDEBUG by default but disable for testing.
2018-03-09 18:28:34 -05:00
David Steele
fbe4c40386
Move logic for setting Perl configuration defaults to C.
2018-03-09 09:30:50 -05:00
David Steele
919635b6f4
Set config before Main::main() call to avoid secrets being exposed in a stack trace.
2018-03-08 16:24:16 -05:00
Cynthia Shang
34898ce471
Error when multiple arguments are set in the config file for an option that does not accept multiple arguments.
...
Contributed by Cynthia Shang.
2018-03-08 14:15:05 -05:00
David Steele
e331564c90
Add new test for Common::Io::Process.
...
Show that output on stderr will raise an exception on close() even if the exit code is 0.
2018-03-08 12:36:55 -05:00
David Steele
62a9bdbd4c
Fix issue passing --no-config to embedded Perl.
...
Reported by Ibrahim Edib Kokdemir.
2018-03-08 10:43:09 -05:00
David Steele
5e0ce3e996
Fix --target-action and --recovery-option options being reported as invalid when restoring with --type=immediate.
...
Reported by Brad Nicholson.
2018-03-06 17:12:16 -05:00
David Steele
4c8ed3530c
Show index in examples for indexed options, i.e. repo-*, pg-*.
...
Suggested by Stephen Frost.
2018-03-06 14:20:12 -05:00
Cynthia Shang
45ffe37e4f
Add cfgOptionTest().
...
Update cfgOption() calls that are better implemented as cfgOptionTest().
Contributed by Cynthia Shang.
2018-03-05 18:51:48 -05:00
David Steele
a50b1eb5be
Remove references to the C library being optional.
2018-03-05 10:03:10 -05:00
David Steele
c07aa2ae19
Improve code documentation in config module.
2018-03-02 22:42:02 -05:00
David Steele
406acf9cba
Enable -Wconversion and silence new warnings.
2018-03-02 12:07:12 -05:00
Adrian Vondendriesch
6ca6424fb1
Remove extraneous sudo commands from src/Makefile.
...
Contributed by Adrian Vondendriesch.
2018-03-01 16:59:49 -05:00
David Steele
af805af044
Remove Debian package patch now that it has been merged upstream.
2018-03-01 16:59:13 -05:00
David Steele
5d1722b8ef
Disable console display of coverage for C files.
...
Devel::Cover does not handle it well.
2018-03-01 13:32:51 -05:00
David Steele
5b491b3035
Add CentOS/RHEL package builds.
2018-02-26 19:32:27 -05:00
David Steele
f9c1a3b156
Enable -Wswitch-enum and silence new warnings.
2018-02-26 10:43:49 -05:00
David Steele
c8df690931
Fix incorrect enum types in config.c that throw warnings under clang.
...
Found by Douglas J Hunley.
2018-02-26 10:02:33 -05:00
David Steele
13cdb75ac5
v2.00: Performance Improvements for Archive Push
...
Features:
* The archive-push command is now partially coded in C which allows the PostgreSQL archive_command to run significantly faster when processing status messages from the asynchronous archive process. (Reviewed by Cynthia Shang.)
Improvements:
* Improve check command to verify that the backup manifest can be built. (Contributed by Cynthia Shang.)
* Improve performance of HTTPS client. Buffering now takes the pending bytes on the socket into account (when present) rather than relying entirely on select(). In some instances the final bytes would not be flushed until the connection was closed.
* Improve S3 delete performance. The constant S3_BATCH_MAX had been replaced with a hard-coded value of 2, probably during testing.
* Allow any non-command-line option to be reset to default on the command-line. This allows options in pgbackrest.conf to be reset to default which reduces the need to write new configuration files for specific needs.
* The C library is now required. This eliminates conditional loading and eases development of new library features.
* The pgbackrest executable is now a C binary instead of Perl. This allows certain time-critical commands (like async archive-push) to run more quickly.
* Rename db-* options to pg-* and backup-* options to repo-* to improve consistency. repo-* options are now indexed although currently only one is allowed.
2018-02-23 22:38:45 -05:00
David Steele
ed5876810d
Fix missing variable replace for PDF code-block title.
...
Found by Jason O'Donnell.
2018-02-23 14:16:20 -05:00
David Steele
2485fabbad
PDF rendering improvements.
...
* Fill is now the default for table columns.
* Column width is specified as a percentage rather that using latex-specific notation.
2018-02-22 09:31:53 -05:00
David Steele
5eb682a569
Add id param for hosts created with host-add.
...
The host-*-ip variable is created from the id param so the name param can be changed without affecting the host-*-ip variable. If id is not specified then it is copied from name.
2018-02-21 18:10:53 -05:00
David Steele
246d441507
More flexible replacements for PDF titles and footers.
2018-02-21 15:30:35 -05:00
David Steele
aed578a4bd
Allow sections to be excluded from table of contents in PDF output.
2018-02-21 15:26:30 -05:00
David Steele
599e41a251
Improve S3 delete performance.
...
The constant S3_BATCH_MAX had been replaced with a hard-coded value of 2, probably during testing.
2018-02-18 14:54:32 -05:00
David Steele
9070325760
Improve performance of HTTPS client.
...
Buffering now takes the pending bytes on the socket into account (when present) rather than relying entirely on select(). In some instances the final bytes would not be flushed until the connection was closed.
2018-02-18 14:53:27 -05:00
David Steele
3eed4bbb43
PDF rendering improvements.
...
* Check both doc-path and bin-path for logo.
* Allow PDF to be output to a location other than the output directory.
* Use PDF-specific version variable for more flexible formatting.
2018-02-16 15:09:37 -05:00
Cynthia Shang
0e27060952
Add table render for Markdown format.
...
Contributed by Cynthia Shang.
2018-02-16 14:55:48 -05:00
David Steele
ca52a0485e
Allow code blocks to have a type.
...
Currently this is only rendered in Markdown.
2018-02-16 14:46:02 -05:00
David Steele
2dc0737e95
Improve section source feature to not require a title or content.
...
The title will be pulled from the source document.
2018-02-16 14:39:42 -05:00
David Steele
1f62237684
Clarify that S3 buckets must be created by the user.
...
Suggested by David Youatt.
2018-02-14 19:52:46 -05:00
David Steele
72cbb9a9d4
Call Perl with built-in interpreter instead of execvp().
...
Exec'ing Perl worked fine but generated a very large command line in the process list and potentially exposed secrets.
2018-02-14 17:19:54 -05:00
David Steele
81952c41f4
Report coverage errors via the console.
...
This helps with debugging coverage issues on remote services like Travis.
2018-02-14 17:13:18 -05:00
David Steele
a907fd7d2d
Build C binary/library for C unit tests that require Perl.
2018-02-14 10:33:21 -05:00
David Steele
213724907b
Add contributor.
2018-02-09 22:27:21 -05:00
David Steele
a3b80768bd
Merge 1.28 release notes.
2018-02-09 15:56:22 -05:00
David Steele
1659598cfe
Create a master list of errors in build/error.yaml.
...
The C and Perl errors lists are created automatically by Build.pm so they stay up to date.
2018-02-08 16:11:47 -05:00
David Steele
eba31fbfe5
Update URL for Debian package repository.
2018-02-08 14:49:35 -05:00
David Steele
7d13087c4b
Rename -no to -reset for non-boolean options.
2018-02-06 11:26:06 -05:00
David Steele
808b6000eb
Fix some bugs in C config code:
...
1) Error when the same option is defined multiple times in a section using alternate names.
2) Fix logging of invalid command error.
3) Warn when a stanza-only option is in a global section.
Also, make a note to add validation of section names to the check command.
Per review by Cynthia Shang.
2018-02-05 15:48:26 -05:00
David Steele
2074e6fbf9
Move log option update to after fork() in archive-push.
...
The log-level-console option should not be changed in the parent process. Even though it is harmless at the moment, that may not always be true.
Per review by Cynthia Shang.
2018-02-05 12:41:42 -05:00
David Steele
db21b7a360
Cleanup usage of internal options.
...
Apply internal to options that need to be read to determine locality but should not appear in the help.
2018-02-05 11:50:09 -05:00
David Steele
be90028100
Rename db-* options to pg-* and backup-* options to repo-* to improve consistency.
...
* repo-* options are now indexed although only one is allowed.
* List deprecated option names in documentation and command-line help.
2018-02-03 18:27:38 -05:00
Cynthia Shang
dc73abdb6e
Improve stanza-create command so that it does not error when the stanza already exists.
...
Contributed by Cynthia Shang.
2018-02-01 14:12:03 -05:00
David Steele
298b33988c
Fix non-compliant formatting for function declarations.
...
Per review by Cynthia Shang.
2018-01-31 18:22:25 -05:00
David Steele
b4d434b41c
Update stanza-create --force documentation to urge caution when using.
...
Suggested by Jason O'Donnell.
2018-01-31 17:34:27 -05:00
Cynthia Shang
bacc08792d
Ensure latest db-id is selected on when matching archive.info to backup.info.
...
This provides correct matching in the event there are system-id and db-version duplicates (e.g. after reverting a pg_upgrade).
Fixed by Cynthia Shang.
Reported by Adam K. Sumner.
2018-01-30 16:49:47 -05:00
Cynthia Shang
00f58ec8c0
Fixed inability to restore a single database contained in a tablespace using --db-include.
...
Fixed by Cynthia Shang.
2018-01-30 16:13:54 -05:00
David Steele
a91a648019
Config parsing no longer implemented in Perl.
...
Options are passed to Perl as JSON from the C process.
2018-01-28 21:37:09 -05:00
David Steele
f0ef1dee05
Improve speed of C unit tests.
...
Preserve object files between tests and use a Makefile to avoid rebuilding object files.
2018-01-26 16:41:17 -05:00
David Steele
b58a45e067
Implement help command in C.
2018-01-23 13:34:24 -05:00
David Steele
2cc9b2287b
The archive-push command is now partially coded in C.
...
This allows the PostgreSQL archive_command to run significantly faster when processing status messages from the asynchronous archive process.
2018-01-17 15:52:00 -05:00
David Steele
a4c058d070
Add 30 second wait loop to lockAcquire() when fail on no lock enabled.
...
This should help prevent processes that are shutting down from interfering with processes that are starting up.
2018-01-17 15:03:55 -05:00
David Steele
1f39a34abc
Move lock release later in exitSafe().
...
This reduce the chance of a new process starting and acquiring a lock before the old process has exited.
2018-01-17 10:31:21 -05:00
David Steele
7c73f4f6c9
Add command and exit modules.
2018-01-17 09:15:51 -05:00
David Steele
39cb971afb
Add log module.
2018-01-16 13:52:20 -05:00
David Steele
8f81620b9f
Improve error module.
...
Add functions to convert error codes to C errors and handle system errors.
2018-01-16 13:29:27 -05:00
David Steele
bffc6c49b3
Add perl-bin option to specify the Perl binary location when /usr/bin/env perl won't work.
2018-01-16 13:23:08 -05:00
David Steele
d633417e5d
Add Wait object and time module.
2018-01-16 13:05:00 -05:00
David Steele
721d1127a0
Add RegExp object.
2018-01-16 12:57:23 -05:00
David Steele
d992851456
Rename Perl tests so they don't conflict with their C counterparts.
2018-01-16 12:36:22 -05:00
Cynthia Shang
0e9ba98a50
Add stanza-delete command to cleanup unused stanzas.
...
Contributed by Cynthia Shang.
2018-01-03 12:23:33 -05:00
David Steele
526acca5bd
Config parsing implemented in C.
2017-12-22 23:27:49 -05:00
David Steele
d8c575801d
Add Ini object.
2017-12-22 22:55:17 -05:00
David Steele
69488ca8ff
Add Storage object.
2017-12-22 22:36:01 -05:00
David Steele
b2a64b1f43
Add KeyValue object.
2017-12-22 22:05:37 -05:00
David Steele
2add6cef95
Add Variant and VariantList objects.
2017-12-22 21:50:27 -05:00
David Steele
c4b30af645
Add Buffer object.
2017-12-22 19:56:01 -05:00
David Steele
5667932063
Improve MemContext module.
...
Add temporary context blocks and refactor allocation arrays to include allocation size.
2017-12-22 18:54:39 -05:00
David Steele
5ea1263d8e
Run valgrind on all C unit tests.
...
Also refactor code to make valgrind happy.
2017-12-22 18:36:36 -05:00
David Steele
b00c6d86b3
Merge 1.27 release notes.
2017-12-19 20:27:31 -05:00
David Steele
70e38a2bd6
Deploy historical documentation to prior rather than the root directory.
2017-12-19 19:14:16 -05:00
David Steele
9fe265d24c
No longer run master branch through CI.
...
The integration branch will be run through CI and then pushed to master with github status checks.
2017-12-19 17:03:17 -05:00
Cynthia Shang
c34a76690f
Fixed info command to eliminate "db (prior)" output if no backups or archives exist for a prior version of the cluster.
...
Fixed by Cynthia Shang.
Reported by Stephen Frost.
2017-12-19 15:39:39 -05:00
David Steele
ef3ef85c33
Fixed an issue where WAL was not expired on PostgreSQL 10.
...
This was caused by a faulty regex that expected all PostgreSQL major versions to be X.X.
Reported by Adam Brusselback.
2017-12-18 18:51:19 -05:00
David Steele
41f5b2cec2
All clusters in the documentation are initialized with checksums.
2017-12-14 15:44:06 -05:00
Cynthia Shang
e5511d0f82
Improve check command to verify that the backup manifest can be built.
...
Contributed by Cynthia Shang.
2017-12-13 11:16:27 -05:00
David Steele
0bfda1a908
Document the relationship between the archive-copy and archive-check options.
...
Suggested by Markus Nullmeier.
2017-12-11 07:48:30 -05:00
David Steele
58b0893067
Improve archive-copy reference documentation.
2017-12-11 07:31:30 -05:00
David Steele
99a0721631
Allow any non-boolean, non-command-line option to be negated.
...
This allows specific options in pgbackrest.conf to be ignored (and set to default) which reduces the need to write new configuration files for specific needs.
Note that boolean, non-command-line options are already negatable.
2017-12-05 15:23:32 -05:00
David Steele
c5fc88d340
Fixed an issue that suppressed locality errors for backup and restore.
...
When a backup host is present, backups should only be allowed on the backup host and restores should only be allowed on the database host unless an alternate configuration is created that ignores the remote host.
Reported by Lardière Sébastien.
2017-12-05 14:59:09 -05:00
David Steele
5eb5d94d65
Allow internal options that do not show up in the documentation.
...
Used for test options initially but other use cases are on the horizon.
2017-12-05 14:46:52 -05:00
David Steele
8d4674031e
More config parsing in C in preparation for all config parsing in C.
2017-12-05 10:09:07 -05:00
David Steele
4f1725dc36
Replace cfgCommandTotal()/cfgOptionTotal() functions with constants.
...
The constants are applicable in more cases and allow the compiler to optimize certain loops more efficiently.
2017-12-05 09:45:51 -05:00