You've already forked pgbackrest
mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2025-07-07 00:35:37 +02:00
Automatically create IoRead/IoWrite interfaces in HRN_FORK*() macros.
This removes a lot of boiler plate where every instance needs to create these interfaces. Also add HRN_FORK_*_NOTIFY*() macros to standardize synchronizing between the parent and child processes. In both cases update the tests with the new macros.
This commit is contained in:
@ -234,14 +234,20 @@ testRun(void)
|
||||
lockAcquire(cfgOptionStr(cfgOptLockPath), STRDEF("stanza1"), STRDEF("999-ffffffff"), lockTypeBackup, 0, true),
|
||||
-1, "create backup/expire lock");
|
||||
|
||||
sleepMSec(1000);
|
||||
// Notify parent that lock has been acquired
|
||||
HRN_FORK_CHILD_NOTIFY_PUT();
|
||||
|
||||
// Wait for parent to allow release lock
|
||||
HRN_FORK_CHILD_NOTIFY_GET();
|
||||
|
||||
lockRelease(true);
|
||||
}
|
||||
HRN_FORK_CHILD_END();
|
||||
|
||||
HRN_FORK_PARENT_BEGIN()
|
||||
{
|
||||
sleepMSec(250);
|
||||
// Wait for child to acquire lock
|
||||
HRN_FORK_PARENT_NOTIFY_GET(0);
|
||||
|
||||
HRN_CFG_LOAD(cfgCmdInfo, argList);
|
||||
TEST_RESULT_STR_Z(
|
||||
@ -306,6 +312,8 @@ testRun(void)
|
||||
" wal archive min/max (9.4): none present\n",
|
||||
"text - single stanza, no valid backups, backup/expire lock detected");
|
||||
|
||||
// Notify child to release lock
|
||||
HRN_FORK_PARENT_NOTIFY_PUT(0);
|
||||
}
|
||||
HRN_FORK_PARENT_END();
|
||||
}
|
||||
@ -417,14 +425,20 @@ testRun(void)
|
||||
lockAcquire(cfgOptionStr(cfgOptLockPath), STRDEF("stanza1"), STRDEF("777-afafafaf"), lockTypeBackup, 0, true),
|
||||
-1, "create backup/expire lock");
|
||||
|
||||
sleepMSec(1000);
|
||||
// Notify parent that lock has been acquired
|
||||
HRN_FORK_CHILD_NOTIFY_PUT();
|
||||
|
||||
// Wait for parent to allow release lock
|
||||
HRN_FORK_CHILD_NOTIFY_GET();
|
||||
|
||||
lockRelease(true);
|
||||
}
|
||||
HRN_FORK_CHILD_END();
|
||||
|
||||
HRN_FORK_PARENT_BEGIN()
|
||||
{
|
||||
sleepMSec(250);
|
||||
// Wait for child to acquire lock
|
||||
HRN_FORK_PARENT_NOTIFY_GET(0);
|
||||
|
||||
HRN_CFG_LOAD(cfgCmdInfo, argList);
|
||||
TEST_RESULT_STR_Z(
|
||||
@ -588,6 +602,9 @@ testRun(void)
|
||||
" database size: 25.7MB, database backup size: 25.7MB\n"
|
||||
" repo1: backup set size: 3MB, backup size: 3KB\n",
|
||||
"text - single stanza, valid backup, no priors, no archives in latest DB, backup/expire lock detected");
|
||||
|
||||
// Notify child to release lock
|
||||
HRN_FORK_PARENT_NOTIFY_PUT(0);
|
||||
}
|
||||
HRN_FORK_PARENT_END();
|
||||
}
|
||||
@ -997,14 +1014,20 @@ testRun(void)
|
||||
lockAcquire(cfgOptionStr(cfgOptLockPath), STRDEF("stanza2"), STRDEF("999-ffffffff"), lockTypeBackup, 0, true),
|
||||
-1, "create backup/expire lock");
|
||||
|
||||
sleepMSec(1000);
|
||||
// Notify parent that lock has been acquired
|
||||
HRN_FORK_CHILD_NOTIFY_PUT();
|
||||
|
||||
// Wait for parent to allow release lock
|
||||
HRN_FORK_CHILD_NOTIFY_GET();
|
||||
|
||||
lockRelease(true);
|
||||
}
|
||||
HRN_FORK_CHILD_END();
|
||||
|
||||
HRN_FORK_PARENT_BEGIN()
|
||||
{
|
||||
sleepMSec(250);
|
||||
// Wait for child to acquire lock
|
||||
HRN_FORK_PARENT_NOTIFY_GET(0);
|
||||
|
||||
HRN_CFG_LOAD(cfgCmdInfo, argListMultiRepoJson);
|
||||
TEST_RESULT_STR_Z(
|
||||
@ -1402,6 +1425,9 @@ testRun(void)
|
||||
"}"
|
||||
"]",
|
||||
"json - multiple stanzas, some with valid backups, archives in latest DB, backup lock held on one stanza");
|
||||
|
||||
// Notify child to release lock
|
||||
HRN_FORK_PARENT_NOTIFY_PUT(0);
|
||||
}
|
||||
HRN_FORK_PARENT_END();
|
||||
}
|
||||
@ -1415,14 +1441,20 @@ testRun(void)
|
||||
lockAcquire(cfgOptionStr(cfgOptLockPath), STRDEF("stanza2"), STRDEF("999-ffffffff"), lockTypeBackup, 0, true),
|
||||
-1, "create backup/expire lock");
|
||||
|
||||
sleepMSec(1000);
|
||||
// Notify parent that lock has been acquired
|
||||
HRN_FORK_CHILD_NOTIFY_PUT();
|
||||
|
||||
// Wait for parent to allow release lock
|
||||
HRN_FORK_CHILD_NOTIFY_GET();
|
||||
|
||||
lockRelease(true);
|
||||
}
|
||||
HRN_FORK_CHILD_END();
|
||||
|
||||
HRN_FORK_PARENT_BEGIN()
|
||||
{
|
||||
sleepMSec(250);
|
||||
// Wait for child to acquire lock
|
||||
HRN_FORK_PARENT_NOTIFY_GET(0);
|
||||
|
||||
HRN_CFG_LOAD(cfgCmdInfo, argListMultiRepo);
|
||||
TEST_RESULT_STR_Z(
|
||||
@ -1506,6 +1538,9 @@ testRun(void)
|
||||
" database size: 25.7MB, database backup size: 25.7MB\n"
|
||||
" repo2: backup set size: 3MB, backup size: 3KB\n",
|
||||
"text - multiple stanzas, multi-repo with valid backups, backup lock held on one stanza");
|
||||
|
||||
// Notify child to release lock
|
||||
HRN_FORK_PARENT_NOTIFY_PUT(0);
|
||||
}
|
||||
HRN_FORK_PARENT_END();
|
||||
}
|
||||
|
Reference in New Issue
Block a user