1
0
mirror of https://github.com/pgbackrest/pgbackrest.git synced 2025-07-17 01:12:23 +02:00

Add separate archive-push-async command.

This command was previously forked off from the archive-push command which required a bit of artificial option and log manipulation.

A separate command is easier to test and will work on platforms that don't have fork(), e.g. Windows.
This commit is contained in:
David Steele
2019-03-14 13:38:55 +04:00
parent 982b47c5ec
commit b8ebea6b1c
17 changed files with 203 additions and 72 deletions

View File

@ -80,6 +80,8 @@ use constant CFGCMD_ARCHIVE_GET_ASYNC => 'archive-
push @EXPORT, qw(CFGCMD_ARCHIVE_GET_ASYNC); push @EXPORT, qw(CFGCMD_ARCHIVE_GET_ASYNC);
use constant CFGCMD_ARCHIVE_PUSH => 'archive-push'; use constant CFGCMD_ARCHIVE_PUSH => 'archive-push';
push @EXPORT, qw(CFGCMD_ARCHIVE_PUSH); push @EXPORT, qw(CFGCMD_ARCHIVE_PUSH);
use constant CFGCMD_ARCHIVE_PUSH_ASYNC => 'archive-push-async';
push @EXPORT, qw(CFGCMD_ARCHIVE_PUSH_ASYNC);
use constant CFGCMD_BACKUP => 'backup'; use constant CFGCMD_BACKUP => 'backup';
push @EXPORT, qw(CFGCMD_BACKUP); push @EXPORT, qw(CFGCMD_BACKUP);
use constant CFGCMD_CHECK => 'check'; use constant CFGCMD_CHECK => 'check';
@ -590,6 +592,14 @@ my $rhCommandDefine =
&CFGDEF_PARAMETER_ALLOWED => true, &CFGDEF_PARAMETER_ALLOWED => true,
}, },
&CFGCMD_ARCHIVE_PUSH_ASYNC =>
{
&CFGDEF_LOG_FILE => true,
&CFGDEF_LOCK_REQUIRED => true,
&CFGDEF_LOCK_TYPE => CFGDEF_LOCK_TYPE_ARCHIVE,
&CFGDEF_PARAMETER_ALLOWED => true,
},
&CFGCMD_BACKUP => &CFGCMD_BACKUP =>
{ {
&CFGDEF_LOCK_REQUIRED => true, &CFGDEF_LOCK_REQUIRED => true,
@ -684,6 +694,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_EXPIRE => {}, &CFGCMD_EXPIRE => {},
@ -783,6 +794,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_EXPIRE => {}, &CFGCMD_EXPIRE => {},
@ -1091,6 +1103,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_EXPIRE => {}, &CFGCMD_EXPIRE => {},
@ -1115,6 +1128,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_LOCAL => {}, &CFGCMD_LOCAL => {},
@ -1147,6 +1161,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_RESTORE => {}, &CFGCMD_RESTORE => {},
} }
@ -1163,6 +1178,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_INFO => {}, &CFGCMD_INFO => {},
@ -1186,6 +1202,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_INFO => {}, &CFGCMD_INFO => {},
@ -1208,6 +1225,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_EXPIRE => {}, &CFGCMD_EXPIRE => {},
@ -1232,6 +1250,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_EXPIRE => {}, &CFGCMD_EXPIRE => {},
@ -1256,6 +1275,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_EXPIRE => {}, &CFGCMD_EXPIRE => {},
&CFGCMD_INFO => {}, &CFGCMD_INFO => {},
@ -1280,6 +1300,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_EXPIRE => {}, &CFGCMD_EXPIRE => {},
@ -1306,6 +1327,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_EXPIRE => {}, &CFGCMD_EXPIRE => {},
@ -1331,6 +1353,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_INFO => {}, &CFGCMD_INFO => {},
@ -1417,6 +1440,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => &CFGCMD_BACKUP =>
{ {
&CFGDEF_INTERNAL => true, &CFGDEF_INTERNAL => true,
@ -1462,6 +1486,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_INFO => {}, &CFGCMD_INFO => {},
&CFGCMD_LOCAL => {}, &CFGCMD_LOCAL => {},
@ -1696,6 +1721,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_EXPIRE => {}, &CFGCMD_EXPIRE => {},
@ -1803,6 +1829,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_EXPIRE => {}, &CFGCMD_EXPIRE => {},
@ -1843,6 +1870,7 @@ my %hConfigDefine =
&CFGDEF_DEPEND_LIST => [true], &CFGDEF_DEPEND_LIST => [true],
}, },
}, },
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
}, },
}, },
@ -1857,6 +1885,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_RESTORE => {}, &CFGCMD_RESTORE => {},
} }
@ -1884,6 +1913,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_EXPIRE => {}, &CFGCMD_EXPIRE => {},
@ -1908,6 +1938,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_EXPIRE => {}, &CFGCMD_EXPIRE => {},
@ -1940,6 +1971,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_EXPIRE => {}, &CFGCMD_EXPIRE => {},
@ -1965,6 +1997,7 @@ my %hConfigDefine =
&CFGCMD_ARCHIVE_GET => {}, &CFGCMD_ARCHIVE_GET => {},
&CFGCMD_ARCHIVE_GET_ASYNC => {}, &CFGCMD_ARCHIVE_GET_ASYNC => {},
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_EXPIRE => {}, &CFGCMD_EXPIRE => {},
@ -2015,6 +2048,7 @@ my %hConfigDefine =
&CFGDEF_COMMAND => &CFGDEF_COMMAND =>
{ {
&CFGCMD_ARCHIVE_PUSH => {}, &CFGCMD_ARCHIVE_PUSH => {},
&CFGCMD_ARCHIVE_PUSH_ASYNC => {},
}, },
}, },
@ -2259,6 +2293,10 @@ my %hConfigDefine =
{ {
&CFGDEF_INTERNAL => true, &CFGDEF_INTERNAL => true,
}, },
&CFGCMD_ARCHIVE_PUSH_ASYNC =>
{
&CFGDEF_INTERNAL => true,
},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_EXPIRE => {}, &CFGCMD_EXPIRE => {},
@ -2380,6 +2418,10 @@ my %hConfigDefine =
{ {
&CFGDEF_REQUIRED => false &CFGDEF_REQUIRED => false
}, },
&CFGCMD_ARCHIVE_PUSH_ASYNC =>
{
&CFGDEF_REQUIRED => false
},
&CFGCMD_BACKUP => {}, &CFGCMD_BACKUP => {},
&CFGCMD_CHECK => {}, &CFGCMD_CHECK => {},
&CFGCMD_LOCAL => &CFGCMD_LOCAL =>

View File

@ -195,7 +195,8 @@ sub process
foreach my $strCommand (cfgDefineCommandList()) foreach my $strCommand (cfgDefineCommandList())
{ {
if ($strCommand eq CFGCMD_REMOTE || $strCommand eq CFGCMD_LOCAL || $strCommand eq CFGCMD_ARCHIVE_GET_ASYNC) if ($strCommand eq CFGCMD_REMOTE || $strCommand eq CFGCMD_LOCAL || $strCommand eq CFGCMD_ARCHIVE_GET_ASYNC ||
$strCommand eq CFGCMD_ARCHIVE_PUSH_ASYNC)
{ {
next; next;
} }

View File

@ -15,6 +15,10 @@
<release date="XXXX-XX-XX" version="2.12dev" title="UNDER DEVELOPMENT"> <release date="XXXX-XX-XX" version="2.12dev" title="UNDER DEVELOPMENT">
<release-core-list> <release-core-list>
<release-development-list> <release-development-list>
<release-item>
<p>Add separate <cmd>archive-push-async</cmd> command.</p>
</release-item>
<release-item> <release-item>
<p>Add <id>CIFS</id> storage driver.</p> <p>Add <id>CIFS</id> storage driver.</p>
</release-item> </release-item>

View File

@ -38,11 +38,13 @@ sub process
( (
$strOperation, $strOperation,
$strWalPathFile, $strWalPathFile,
$bAsync,
) = ) =
logDebugParam logDebugParam
( (
__PACKAGE__ . '->process', \@_, __PACKAGE__ . '->process', \@_,
{name => 'strWalPathFile', required => false}, {name => 'strWalPathFile', required => false},
{name => 'bAsync', required => true},
); );
# Make sure the command happens on the db side # Make sure the command happens on the db side
@ -61,7 +63,7 @@ sub process
my $strWalFile = basename($strWalPathFile); my $strWalFile = basename($strWalPathFile);
# Start the async process and wait for WAL to complete # Start the async process and wait for WAL to complete
if (cfgOption(CFGOPT_ARCHIVE_ASYNC)) if ($bAsync)
{ {
# Load module dynamically # Load module dynamically
require pgBackRest::Archive::Push::Async; require pgBackRest::Archive::Push::Async;

View File

@ -106,6 +106,7 @@ sub libcAutoExportTag
'CFGCMD_ARCHIVE_GET', 'CFGCMD_ARCHIVE_GET',
'CFGCMD_ARCHIVE_GET_ASYNC', 'CFGCMD_ARCHIVE_GET_ASYNC',
'CFGCMD_ARCHIVE_PUSH', 'CFGCMD_ARCHIVE_PUSH',
'CFGCMD_ARCHIVE_PUSH_ASYNC',
'CFGCMD_BACKUP', 'CFGCMD_BACKUP',
'CFGCMD_CHECK', 'CFGCMD_CHECK',
'CFGCMD_EXPIRE', 'CFGCMD_EXPIRE',

View File

@ -77,7 +77,18 @@ sub main
require pgBackRest::Archive::Push::Push; require pgBackRest::Archive::Push::Push;
pgBackRest::Archive::Push::Push->import(); pgBackRest::Archive::Push::Push->import();
new pgBackRest::Archive::Push::Push()->process($stryCommandArg[0]); new pgBackRest::Archive::Push::Push()->process($stryCommandArg[0], false);
}
# Process archive-push-async command
# --------------------------------------------------------------------------------------------------------------------------
elsif (cfgCommandTest(CFGCMD_ARCHIVE_PUSH_ASYNC))
{
# Load module dynamically
require pgBackRest::Archive::Push::Push;
pgBackRest::Archive::Push::Push->import();
new pgBackRest::Archive::Push::Push()->process($stryCommandArg[0], true);
} }
# Process remote command # Process remote command

View File

@ -211,7 +211,7 @@ command/archive/get/get.o: command/archive/get/get.c command/archive/common.h co
command/archive/get/protocol.o: command/archive/get/protocol.c command/archive/get/file.h command/archive/get/protocol.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h protocol/server.h storage/fileRead.h storage/fileWrite.h storage/helper.h storage/info.h storage/storage.h command/archive/get/protocol.o: command/archive/get/protocol.c command/archive/get/file.h command/archive/get/protocol.h common/assert.h common/crypto/common.h common/debug.h common/error.auto.h common/error.h common/io/filter/filter.h common/io/filter/group.h common/io/io.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h protocol/server.h storage/fileRead.h storage/fileWrite.h storage/helper.h storage/info.h storage/storage.h
$(CC) $(CFLAGS) -c command/archive/get/protocol.c -o command/archive/get/protocol.o $(CC) $(CFLAGS) -c command/archive/get/protocol.c -o command/archive/get/protocol.o
command/archive/push/push.o: command/archive/push/push.c command/archive/common.h command/command.h common/assert.h common/debug.h common/error.auto.h common/error.h common/fork.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/variant.h common/type/variantList.h common/wait.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/load.h perl/exec.h storage/fileRead.h storage/fileWrite.h storage/helper.h storage/info.h storage/storage.h command/archive/push/push.o: command/archive/push/push.c command/archive/common.h command/command.h common/assert.h common/debug.h common/error.auto.h common/error.h common/fork.h common/io/filter/filter.h common/io/filter/group.h common/io/read.h common/io/write.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/variant.h common/type/variantList.h common/wait.h config/config.auto.h config/config.h config/define.auto.h config/define.h config/exec.h perl/exec.h storage/fileRead.h storage/fileWrite.h storage/helper.h storage/info.h storage/storage.h
$(CC) $(CFLAGS) -c command/archive/push/push.c -o command/archive/push/push.o $(CC) $(CFLAGS) -c command/archive/push/push.c -o command/archive/push/push.o
command/command.o: command/command.c common/assert.h common/debug.h common/error.auto.h common/error.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h version.h command/command.o: command/command.c common/assert.h common/debug.h common/error.auto.h common/error.h common/lock.h common/log.h common/logLevel.h common/memContext.h common/stackTrace.h common/time.h common/type/buffer.h common/type/convert.h common/type/keyValue.h common/type/string.h common/type/stringList.h common/type/variant.h common/type/variantList.h config/config.auto.h config/config.h config/define.auto.h config/define.h version.h

View File

@ -11,7 +11,7 @@ Archive Push Command
#include "common/memContext.h" #include "common/memContext.h"
#include "common/wait.h" #include "common/wait.h"
#include "config/config.h" #include "config/config.h"
#include "config/load.h" #include "config/exec.h"
#include "perl/exec.h" #include "perl/exec.h"
#include "storage/helper.h" #include "storage/helper.h"
@ -39,7 +39,6 @@ cmdArchivePush(void)
bool pushed = false; // Has the WAL segment been pushed yet? bool pushed = false; // Has the WAL segment been pushed yet?
bool forked = false; // Has the async process been forked yet? bool forked = false; // Has the async process been forked yet?
bool confessOnError = false; // Should we confess errors? bool confessOnError = false; // Should we confess errors?
bool server = false; // Is this the async server process?
// Loop and wait for the WAL segment to be pushed // Loop and wait for the WAL segment to be pushed
Wait *wait = waitNew((TimeMSec)(cfgOptionDbl(cfgOptArchiveTimeout) * MSEC_PER_SEC)); Wait *wait = waitNew((TimeMSec)(cfgOptionDbl(cfgOptArchiveTimeout) * MSEC_PER_SEC));
@ -56,74 +55,52 @@ cmdArchivePush(void)
if (!pushed && !forked && if (!pushed && !forked &&
lockAcquire(cfgOptionStr(cfgOptLockPath), cfgOptionStr(cfgOptStanza), cfgLockType(), 0, false)) lockAcquire(cfgOptionStr(cfgOptLockPath), cfgOptionStr(cfgOptStanza), cfgLockType(), 0, false))
{ {
// The async process should not output on the console at all
KeyValue *optionReplace = kvNew();
kvPut(optionReplace, varNewStr(strNew(cfgOptionName(cfgOptLogLevelConsole))), varNewStrZ("off"));
kvPut(optionReplace, varNewStr(strNew(cfgOptionName(cfgOptLogLevelStderr))), varNewStrZ("off"));
// Generate command options
StringList *commandExec = cfgExecParam(cfgCmdArchivePushAsync, optionReplace);
strLstInsert(commandExec, 0, cfgExe());
strLstAdd(commandExec, strLstGet(commandParam, 0));
// Release the lock and mark the async process as forked
lockRelease(true);
forked = true;
// Fork off the async process // Fork off the async process
if (fork() == 0) if (fork() == 0)
{ {
// This is the server process
server = true;
// The async process should not output on the console at all
cfgOptionSet(cfgOptLogLevelConsole, cfgSourceParam, varNewStrZ("off"));
cfgOptionSet(cfgOptLogLevelStderr, cfgSourceParam, varNewStrZ("off"));
cfgLoadLogSetting();
// Open the log file
cfgLoadLogFile(
strNewFmt("%s/%s-%s-async.log", strPtr(cfgOptionStr(cfgOptLogPath)),
strPtr(cfgOptionStr(cfgOptStanza)), cfgCommandName(cfgCommand())));
// Log command info since we are starting a new log
cmdBegin(true);
// Detach from parent process // Detach from parent process
forkDetach(); forkDetach();
// Execute async process and catch exceptions // Execute the binary. This statement will not return if it is successful.
TRY_BEGIN() THROW_ON_SYS_ERROR_FMT(
{ execvp(strPtr(cfgExe()), (char ** const)strLstPtr(commandExec)) == -1,
perlExec(); ExecuteError, "unable to execute '%s'", cfgCommandName(cfgCmdArchiveGetAsync));
}
CATCH_ANY()
{
RETHROW();
}
FINALLY()
{
// Release the lock (mostly here for testing since it would be freed in exitSafe() anyway)
lockRelease(true);
}
TRY_END();
}
// Else mark async process as forked
else
{
lockClear(true);
forked = true;
} }
} }
// Now that the async process has been launched, confess any errors that are found // Now that the async process has been launched, confess any errors that are found
confessOnError = true; confessOnError = true;
} }
while (!server && !pushed && waitMore(wait)); while (!pushed && waitMore(wait));
// The aysnc server does not give notifications // If the WAL segment was not pushed then error
if (!server) if (!pushed)
{ {
// If the WAL segment was not pushed then error THROW_FMT(
if (!pushed) ArchiveTimeoutError, "unable to push WAL segment '%s' asynchronously after %lg second(s)",
{ strPtr(walSegment), cfgOptionDbl(cfgOptArchiveTimeout));
THROW_FMT(
ArchiveTimeoutError, "unable to push WAL segment '%s' asynchronously after %lg second(s)",
strPtr(walSegment), cfgOptionDbl(cfgOptArchiveTimeout));
}
// Log success
LOG_INFO("pushed WAL segment %s asynchronously", strPtr(walSegment));
} }
// Log success
LOG_INFO("pushed WAL segment %s asynchronously", strPtr(walSegment));
} }
else else
THROW(AssertError, "archive-push in C does not support synchronous mode"); perlExec();
} }
MEM_CONTEXT_TEMP_END(); MEM_CONTEXT_TEMP_END();

View File

@ -45,6 +45,18 @@ static ConfigCommandData configCommandData[CFG_COMMAND_TOTAL] = CONFIG_COMMAND_L
CONFIG_COMMAND_PARAMETER_ALLOWED(true) CONFIG_COMMAND_PARAMETER_ALLOWED(true)
) )
CONFIG_COMMAND
(
CONFIG_COMMAND_NAME("archive-push-async")
CONFIG_COMMAND_LOG_FILE(true)
CONFIG_COMMAND_LOG_LEVEL_DEFAULT(logLevelInfo)
CONFIG_COMMAND_LOG_LEVEL_STDERR_MAX(logLevelTrace)
CONFIG_COMMAND_LOCK_REQUIRED(true)
CONFIG_COMMAND_LOCK_TYPE(lockTypeArchive)
CONFIG_COMMAND_PARAMETER_ALLOWED(true)
)
CONFIG_COMMAND CONFIG_COMMAND
( (
CONFIG_COMMAND_NAME("backup") CONFIG_COMMAND_NAME("backup")

View File

@ -9,7 +9,7 @@ Automatically generated by Build.pm -- do not modify directly.
/*********************************************************************************************************************************** /***********************************************************************************************************************************
Command constants Command constants
***********************************************************************************************************************************/ ***********************************************************************************************************************************/
#define CFG_COMMAND_TOTAL 18 #define CFG_COMMAND_TOTAL 19
/*********************************************************************************************************************************** /***********************************************************************************************************************************
Option constants Option constants
@ -24,6 +24,7 @@ typedef enum
cfgCmdArchiveGet, cfgCmdArchiveGet,
cfgCmdArchiveGetAsync, cfgCmdArchiveGetAsync,
cfgCmdArchivePush, cfgCmdArchivePush,
cfgCmdArchivePushAsync,
cfgCmdBackup, cfgCmdBackup,
cfgCmdCheck, cfgCmdCheck,
cfgCmdExpire, cfgCmdExpire,

View File

@ -36,6 +36,11 @@ static ConfigDefineCommandData configDefineCommandData[] = CFGDEFDATA_COMMAND_LI
) )
) )
CFGDEFDATA_COMMAND
(
CFGDEFDATA_COMMAND_NAME("archive-push-async")
)
CFGDEFDATA_COMMAND CFGDEFDATA_COMMAND
( (
CFGDEFDATA_COMMAND_NAME("backup") CFGDEFDATA_COMMAND_NAME("backup")
@ -420,6 +425,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND_LIST CFGDEFDATA_OPTION_COMMAND_LIST
( (
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
) )
CFGDEFDATA_OPTION_OPTIONAL_LIST CFGDEFDATA_OPTION_OPTIONAL_LIST
@ -530,6 +536,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -616,6 +623,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -678,6 +686,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
) )
@ -712,6 +721,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
@ -757,6 +767,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
@ -799,6 +810,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -844,6 +856,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -892,6 +905,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -969,6 +983,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
@ -1282,6 +1297,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
@ -1333,6 +1349,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -1394,6 +1411,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -1474,6 +1492,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -1530,6 +1549,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -1574,6 +1594,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -1619,6 +1640,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -1701,6 +1723,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -1843,6 +1866,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -1881,6 +1905,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -1919,6 +1944,13 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_OPTIONAL_INTERNAL(true) CFGDEFDATA_OPTION_OPTIONAL_INTERNAL(true)
) )
CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRRIDE
(
CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_OPTIONAL_INTERNAL(true)
)
CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRRIDE CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRRIDE
( (
CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdRestore)
@ -2205,6 +2237,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
@ -2241,6 +2274,13 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_OPTIONAL_REQUIRED(false) CFGDEFDATA_OPTION_OPTIONAL_REQUIRED(false)
) )
CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRRIDE
(
CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_OPTIONAL_REQUIRED(false)
)
CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRRIDE CFGDEFDATA_OPTION_OPTIONAL_COMMAND_OVERRRIDE
( (
CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdLocal) CFGDEFDATA_OPTION_OPTIONAL_COMMAND(cfgDefCmdLocal)
@ -2402,6 +2442,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdRestore)
) )
@ -2439,6 +2480,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
@ -2527,6 +2569,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -2582,6 +2625,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -2669,6 +2713,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -2749,6 +2794,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
@ -2790,6 +2836,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
@ -2832,6 +2879,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
@ -2873,6 +2921,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
@ -2913,6 +2962,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
@ -2957,6 +3007,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdInfo)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
@ -3003,6 +3054,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -3209,6 +3261,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -3259,6 +3312,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -3309,6 +3363,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -3359,6 +3414,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -3409,6 +3465,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -3459,6 +3516,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -3523,6 +3581,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -3587,6 +3646,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -3637,6 +3697,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -3688,6 +3749,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -3743,6 +3805,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)
@ -3877,6 +3940,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdLocal)
) )
@ -3939,6 +4003,7 @@ static ConfigDefineOptionData configDefineOptionData[] = CFGDEFDATA_OPTION_LIST
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGet)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchiveGetAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePush)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdArchivePushAsync)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdBackup)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdCheck)
CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire) CFGDEFDATA_OPTION_COMMAND(cfgDefCmdExpire)

View File

@ -14,6 +14,7 @@ typedef enum
cfgDefCmdArchiveGet, cfgDefCmdArchiveGet,
cfgDefCmdArchiveGetAsync, cfgDefCmdArchiveGetAsync,
cfgDefCmdArchivePush, cfgDefCmdArchivePush,
cfgDefCmdArchivePushAsync,
cfgDefCmdBackup, cfgDefCmdBackup,
cfgDefCmdCheck, cfgDefCmdCheck,
cfgDefCmdExpire, cfgDefCmdExpire,

View File

@ -53,7 +53,7 @@ typedef struct ConfigDefineOptionData
unsigned int section:2; // Config section (e.g. global, stanza, cmd-line) unsigned int section:2; // Config section (e.g. global, stanza, cmd-line)
bool required:1; // Is the option required? bool required:1; // Is the option required?
bool secure:1; // Does the option need to be redacted on logs and cmd-line? bool secure:1; // Does the option need to be redacted on logs and cmd-line?
unsigned int commandValid:17; // Bitmap for commands that the option is valid for unsigned int commandValid:18; // Bitmap for commands that the option is valid for
const char *helpSection; // Classify the option const char *helpSection; // Classify the option
const char *helpSummary; // Brief summary of the option const char *helpSummary; // Brief summary of the option

View File

@ -94,9 +94,9 @@ main(int argListSize, const char *argList[])
cmdArchiveGetAsync(); cmdArchiveGetAsync();
} }
// Archive push command. Currently only implements local operations of async archive push. // Archive push command.
// ------------------------------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------------------------------
else if (cfgCommand() == cfgCmdArchivePush && cfgOptionBool(cfgOptArchiveAsync)) else if (cfgCommand() == cfgCmdArchivePush)
{ {
cmdArchivePush(); cmdArchivePush();
} }

View File

@ -1534,11 +1534,13 @@ static const EmbeddedModule embeddedModule[] =
"(\n" "(\n"
"$strOperation,\n" "$strOperation,\n"
"$strWalPathFile,\n" "$strWalPathFile,\n"
"$bAsync,\n"
") =\n" ") =\n"
"logDebugParam\n" "logDebugParam\n"
"(\n" "(\n"
"__PACKAGE__ . '->process', \\@_,\n" "__PACKAGE__ . '->process', \\@_,\n"
"{name => 'strWalPathFile', required => false},\n" "{name => 'strWalPathFile', required => false},\n"
"{name => 'bAsync', required => true},\n"
");\n" ");\n"
"\n\n" "\n\n"
"if (!isDbLocal())\n" "if (!isDbLocal())\n"
@ -1554,7 +1556,7 @@ static const EmbeddedModule embeddedModule[] =
"my $strWalPath = dirname(walPath($strWalPathFile, cfgOption(CFGOPT_PG_PATH, false), cfgCommandName(cfgCommandGet())));\n" "my $strWalPath = dirname(walPath($strWalPathFile, cfgOption(CFGOPT_PG_PATH, false), cfgCommandName(cfgCommandGet())));\n"
"my $strWalFile = basename($strWalPathFile);\n" "my $strWalFile = basename($strWalPathFile);\n"
"\n\n" "\n\n"
"if (cfgOption(CFGOPT_ARCHIVE_ASYNC))\n" "if ($bAsync)\n"
"{\n" "{\n"
"\n" "\n"
"require pgBackRest::Archive::Push::Async;\n" "require pgBackRest::Archive::Push::Async;\n"
@ -10215,6 +10217,7 @@ static const EmbeddedModule embeddedModule[] =
"'CFGCMD_ARCHIVE_GET',\n" "'CFGCMD_ARCHIVE_GET',\n"
"'CFGCMD_ARCHIVE_GET_ASYNC',\n" "'CFGCMD_ARCHIVE_GET_ASYNC',\n"
"'CFGCMD_ARCHIVE_PUSH',\n" "'CFGCMD_ARCHIVE_PUSH',\n"
"'CFGCMD_ARCHIVE_PUSH_ASYNC',\n"
"'CFGCMD_BACKUP',\n" "'CFGCMD_BACKUP',\n"
"'CFGCMD_CHECK',\n" "'CFGCMD_CHECK',\n"
"'CFGCMD_EXPIRE',\n" "'CFGCMD_EXPIRE',\n"
@ -10528,7 +10531,16 @@ static const EmbeddedModule embeddedModule[] =
"require pgBackRest::Archive::Push::Push;\n" "require pgBackRest::Archive::Push::Push;\n"
"pgBackRest::Archive::Push::Push->import();\n" "pgBackRest::Archive::Push::Push->import();\n"
"\n" "\n"
"new pgBackRest::Archive::Push::Push()->process($stryCommandArg[0]);\n" "new pgBackRest::Archive::Push::Push()->process($stryCommandArg[0], false);\n"
"}\n"
"\n\n\n"
"elsif (cfgCommandTest(CFGCMD_ARCHIVE_PUSH_ASYNC))\n"
"{\n"
"\n"
"require pgBackRest::Archive::Push::Push;\n"
"pgBackRest::Archive::Push::Push->import();\n"
"\n"
"new pgBackRest::Archive::Push::Push()->process($stryCommandArg[0], true);\n"
"}\n" "}\n"
"\n\n\n" "\n\n\n"
"elsif (cfgCommandTest(CFGCMD_REMOTE))\n" "elsif (cfgCommandTest(CFGCMD_REMOTE))\n"

View File

@ -548,20 +548,21 @@ sub run
$self->optionTestSet(CFGOPT_PG_HOST, BOGUS); $self->optionTestSet(CFGOPT_PG_HOST, BOGUS);
$self->configTestLoad(CFGCMD_ARCHIVE_PUSH); $self->configTestLoad(CFGCMD_ARCHIVE_PUSH);
$self->testException(sub {$oPush->process(undef)}, ERROR_HOST_INVALID, 'archive-push operation must run on db host'); $self->testException(sub {$oPush->process(undef, false)}, ERROR_HOST_INVALID, 'archive-push operation must run on db host');
#--------------------------------------------------------------------------------------------------------------------------- #---------------------------------------------------------------------------------------------------------------------------
# Reset pg-host # Reset pg-host
$self->optionTestClear(CFGOPT_PG_HOST); $self->optionTestClear(CFGOPT_PG_HOST);
$self->configTestLoad(CFGCMD_ARCHIVE_PUSH); $self->configTestLoad(CFGCMD_ARCHIVE_PUSH);
$self->testException(sub {$oPush->process(undef)}, ERROR_PARAM_REQUIRED, 'WAL file to push required'); $self->testException(sub {$oPush->process(undef, false)}, ERROR_PARAM_REQUIRED, 'WAL file to push required');
#--------------------------------------------------------------------------------------------------------------------------- #---------------------------------------------------------------------------------------------------------------------------
my $strSegment = $self->walSegment($iWalTimeline, $iWalMajor, $iWalMinor++); my $strSegment = $self->walSegment($iWalTimeline, $iWalMajor, $iWalMinor++);
$self->walGenerate($self->{strWalPath}, PG_VERSION_94, 1, $strSegment); $self->walGenerate($self->{strWalPath}, PG_VERSION_94, 1, $strSegment);
$self->testResult(sub {$oPush->process("pg_xlog/${strSegment}")}, undef, "${strSegment} WAL pushed (with relative path)"); $self->testResult(
sub {$oPush->process("pg_xlog/${strSegment}", false)}, undef, "${strSegment} WAL pushed (with relative path)");
$self->testResult( $self->testResult(
sub {walSegmentFind(storageRepo(), $self->{strArchiveId}, $strSegment)}, "${strSegment}-$self->{strWalHash}", sub {walSegmentFind(storageRepo(), $self->{strArchiveId}, $strSegment)}, "${strSegment}-$self->{strWalHash}",
@ -577,7 +578,7 @@ sub run
$strSegment = $self->walSegment($iWalTimeline, $iWalMajor, $iWalMinor++); $strSegment = $self->walSegment($iWalTimeline, $iWalMajor, $iWalMinor++);
$self->walGenerate($self->{strWalPath}, PG_VERSION_94, 1, $strSegment); $self->walGenerate($self->{strWalPath}, PG_VERSION_94, 1, $strSegment);
$self->testResult(sub {$oPush->process("$self->{strWalPath}/${strSegment}")}, undef, "${strSegment} WAL dropped"); $self->testResult(sub {$oPush->process("$self->{strWalPath}/${strSegment}", false)}, undef, "${strSegment} WAL dropped");
$self->testResult( $self->testResult(
sub {walSegmentFind(storageRepo(), $self->{strArchiveId}, $strSegment)}, '[undef]', sub {walSegmentFind(storageRepo(), $self->{strArchiveId}, $strSegment)}, '[undef]',
"${strSegment} WAL in archive"); "${strSegment} WAL in archive");
@ -586,7 +587,7 @@ sub run
$self->optionTestSet(CFGOPT_ARCHIVE_PUSH_QUEUE_MAX, PG_WAL_SIZE_TEST * 4); $self->optionTestSet(CFGOPT_ARCHIVE_PUSH_QUEUE_MAX, PG_WAL_SIZE_TEST * 4);
$self->configTestLoad(CFGCMD_ARCHIVE_PUSH); $self->configTestLoad(CFGCMD_ARCHIVE_PUSH);
$self->testResult(sub {$oPush->process("$self->{strWalPath}/${strSegment}")}, undef, "${strSegment} WAL pushed"); $self->testResult(sub {$oPush->process("$self->{strWalPath}/${strSegment}", false)}, undef, "${strSegment} WAL pushed");
$self->testResult( $self->testResult(
sub {walSegmentFind(storageRepo(), $self->{strArchiveId}, $strSegment)}, "${strSegment}-$self->{strWalHash}", sub {walSegmentFind(storageRepo(), $self->{strArchiveId}, $strSegment)}, "${strSegment}-$self->{strWalHash}",
"${strSegment} WAL in archive"); "${strSegment} WAL in archive");
@ -605,7 +606,8 @@ sub run
$strSegment = $self->walSegment($iWalTimeline, $iWalMajor, $iWalMinor++); $strSegment = $self->walSegment($iWalTimeline, $iWalMajor, $iWalMinor++);
$self->walGenerate($self->{strWalPath}, PG_VERSION_94, 1, $strSegment); $self->walGenerate($self->{strWalPath}, PG_VERSION_94, 1, $strSegment);
$self->testResult(sub {$oPush->process("$self->{strWalPath}/${strSegment}")}, undef, "${strSegment} WAL pushed async"); $self->testResult(
sub {$oPush->process("$self->{strWalPath}/${strSegment}", true)}, undef, "${strSegment} WAL pushed async");
$self->testResult( $self->testResult(
sub {walSegmentFind(storageRepo(), $self->{strArchiveId}, $strSegment, 5)}, "${strSegment}-$self->{strWalHash}", sub {walSegmentFind(storageRepo(), $self->{strArchiveId}, $strSegment, 5)}, "${strSegment}-$self->{strWalHash}",
@ -622,7 +624,7 @@ sub run
$self->optionTestSet(CFGOPT_ARCHIVE_TIMEOUT, 5); $self->optionTestSet(CFGOPT_ARCHIVE_TIMEOUT, 5);
$self->configTestLoad(CFGCMD_ARCHIVE_PUSH); $self->configTestLoad(CFGCMD_ARCHIVE_PUSH);
$self->testResult(sub {$oPush->process("$self->{strWalPath}/${strSegment}")}, undef, 'process connect error'); $self->testResult(sub {$oPush->process("$self->{strWalPath}/${strSegment}", true)}, undef, 'process connect error');
# Check contents of error file # Check contents of error file
my $strErrorFile = STORAGE_SPOOL_ARCHIVE_OUT . "/${strSegment}.error"; my $strErrorFile = STORAGE_SPOOL_ARCHIVE_OUT . "/${strSegment}.error";

View File

@ -21,7 +21,7 @@ testRun(void)
if (testBegin("cmdArchivePush()")) if (testBegin("cmdArchivePush()"))
{ {
StringList *argList = strLstNew(); StringList *argList = strLstNew();
strLstAddZ(argList, "pgbackrest"); strLstAddZ(argList, "pgbackrest-bogus");
strLstAddZ(argList, "--archive-timeout=1"); strLstAddZ(argList, "--archive-timeout=1");
strLstAddZ(argList, "--stanza=db"); strLstAddZ(argList, "--stanza=db");
strLstAddZ(argList, "archive-push"); strLstAddZ(argList, "archive-push");
@ -33,7 +33,7 @@ testRun(void)
strLstAddZ(argList, "000000010000000100000001"); strLstAddZ(argList, "000000010000000100000001");
harnessCfgLoad(strLstSize(argList), strLstPtr(argList)); harnessCfgLoad(strLstSize(argList), strLstPtr(argList));
TEST_ERROR(cmdArchivePush(), AssertError, "archive-push in C does not support synchronous mode"); TEST_ERROR(cmdArchivePush(), OptionRequiredError , "===PERL-EMBED-ERROR===");
// Make sure the process times out when there is nothing to archive // Make sure the process times out when there is nothing to archive
// ------------------------------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------------------------------