mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2025-04-17 11:46:39 +02:00
Refactor info command repoMin/Max.
This commit is contained in:
parent
118d9e64fe
commit
065b2ff230
@ -42,6 +42,7 @@
|
|||||||
<commit subject="Expire continues if an error occurs processing a repository."/>
|
<commit subject="Expire continues if an error occurs processing a repository."/>
|
||||||
<commit subject="Add archive-get command multi-repo support."/>
|
<commit subject="Add archive-get command multi-repo support."/>
|
||||||
<commit subject="Enhance restore command multi-repo support."/>
|
<commit subject="Enhance restore command multi-repo support."/>
|
||||||
|
<commit subject="Refactor info command repoMin/Max."/>
|
||||||
|
|
||||||
<release-item-contributor-list>
|
<release-item-contributor-list>
|
||||||
<release-item-contributor id="cynthia.shang"/>
|
<release-item-contributor id="cynthia.shang"/>
|
||||||
|
@ -501,15 +501,15 @@ For each current backup in the backup.info file of the stanza, set the data for
|
|||||||
***********************************************************************************************************************************/
|
***********************************************************************************************************************************/
|
||||||
static void
|
static void
|
||||||
backupList(
|
backupList(
|
||||||
VariantList *backupSection, InfoStanzaRepo *stanzaData, const String *backupLabel, unsigned int repoIdxStart,
|
VariantList *backupSection, InfoStanzaRepo *stanzaData, const String *backupLabel, unsigned int repoIdxMin,
|
||||||
unsigned int repoIdxMax)
|
unsigned int repoIdxMax)
|
||||||
{
|
{
|
||||||
FUNCTION_TEST_BEGIN();
|
FUNCTION_TEST_BEGIN();
|
||||||
FUNCTION_TEST_PARAM(VARIANT_LIST, backupSection); // The section to add the backup data to
|
FUNCTION_TEST_PARAM(VARIANT_LIST, backupSection); // The section to add the backup data to
|
||||||
FUNCTION_TEST_PARAM(INFO_STANZA_REPO, stanzaData); // The data for the stanza
|
FUNCTION_TEST_PARAM(INFO_STANZA_REPO, stanzaData); // The data for the stanza
|
||||||
FUNCTION_TEST_PARAM(STRING, backupLabel); // Backup label to filter if requested by the user
|
FUNCTION_TEST_PARAM(STRING, backupLabel); // Backup label to filter if requested by the user
|
||||||
FUNCTION_TEST_PARAM(UINT, repoIdxStart); // The start index of the repo array to begin checking
|
FUNCTION_TEST_PARAM(UINT, repoIdxMin); // The start index of the repo array to begin checking
|
||||||
FUNCTION_TEST_PARAM(UINT, repoIdxMax); // The index beyond the last repo index to check
|
FUNCTION_TEST_PARAM(UINT, repoIdxMax); // The index of the last repo to check
|
||||||
FUNCTION_TEST_END();
|
FUNCTION_TEST_END();
|
||||||
|
|
||||||
ASSERT(backupSection != NULL);
|
ASSERT(backupSection != NULL);
|
||||||
@ -520,7 +520,7 @@ backupList(
|
|||||||
unsigned int backupTotalProcessed = 0;
|
unsigned int backupTotalProcessed = 0;
|
||||||
|
|
||||||
// Get the number of backups to be processed
|
// Get the number of backups to be processed
|
||||||
for (unsigned int repoIdx = repoIdxStart; repoIdx < repoIdxMax; repoIdx++)
|
for (unsigned int repoIdx = repoIdxMin; repoIdx <= repoIdxMax; repoIdx++)
|
||||||
{
|
{
|
||||||
InfoRepoData *repoData = &stanzaData->repoList[repoIdx];
|
InfoRepoData *repoData = &stanzaData->repoList[repoIdx];
|
||||||
|
|
||||||
@ -534,7 +534,7 @@ backupList(
|
|||||||
time_t backupNextTime = 0;
|
time_t backupNextTime = 0;
|
||||||
|
|
||||||
// Backups are sorted for each repo, so iterate over the lists to create a single list ordered by backup-timestamp-stop
|
// Backups are sorted for each repo, so iterate over the lists to create a single list ordered by backup-timestamp-stop
|
||||||
for (unsigned int repoIdx = repoIdxStart; repoIdx < repoIdxMax; repoIdx++)
|
for (unsigned int repoIdx = repoIdxMin; repoIdx <= repoIdxMax; repoIdx++)
|
||||||
{
|
{
|
||||||
InfoRepoData *repoData = &stanzaData->repoList[repoIdx];
|
InfoRepoData *repoData = &stanzaData->repoList[repoIdx];
|
||||||
|
|
||||||
@ -571,12 +571,12 @@ backupList(
|
|||||||
Set the stanza data for each stanza found in the repo
|
Set the stanza data for each stanza found in the repo
|
||||||
***********************************************************************************************************************************/
|
***********************************************************************************************************************************/
|
||||||
static VariantList *
|
static VariantList *
|
||||||
stanzaInfoList(List *stanzaRepoList, const String *backupLabel, unsigned int repoIdxStart, unsigned int repoIdxMax)
|
stanzaInfoList(List *stanzaRepoList, const String *backupLabel, unsigned int repoIdxMin, unsigned int repoIdxMax)
|
||||||
{
|
{
|
||||||
FUNCTION_TEST_BEGIN();
|
FUNCTION_TEST_BEGIN();
|
||||||
FUNCTION_TEST_PARAM(LIST, stanzaRepoList);
|
FUNCTION_TEST_PARAM(LIST, stanzaRepoList);
|
||||||
FUNCTION_TEST_PARAM(STRING, backupLabel);
|
FUNCTION_TEST_PARAM(STRING, backupLabel);
|
||||||
FUNCTION_TEST_PARAM(UINT, repoIdxStart);
|
FUNCTION_TEST_PARAM(UINT, repoIdxMin);
|
||||||
FUNCTION_TEST_PARAM(UINT, repoIdxMax);
|
FUNCTION_TEST_PARAM(UINT, repoIdxMax);
|
||||||
FUNCTION_TEST_END();
|
FUNCTION_TEST_END();
|
||||||
|
|
||||||
@ -607,7 +607,7 @@ stanzaInfoList(List *stanzaRepoList, const String *backupLabel, unsigned int rep
|
|||||||
kvPut(varKv(stanzaInfo), KEY_NAME_VAR, VARSTR(stanzaData->name));
|
kvPut(varKv(stanzaInfo), KEY_NAME_VAR, VARSTR(stanzaData->name));
|
||||||
|
|
||||||
// Get the stanza for each requested repo
|
// Get the stanza for each requested repo
|
||||||
for (unsigned int repoIdx = repoIdxStart; repoIdx < repoIdxMax; repoIdx++)
|
for (unsigned int repoIdx = repoIdxMin; repoIdx <= repoIdxMax; repoIdx++)
|
||||||
{
|
{
|
||||||
InfoRepoData *repoData = &stanzaData->repoList[repoIdx];
|
InfoRepoData *repoData = &stanzaData->repoList[repoIdx];
|
||||||
|
|
||||||
@ -668,7 +668,7 @@ stanzaInfoList(List *stanzaRepoList, const String *backupLabel, unsigned int rep
|
|||||||
// Track the status over all repos if the status for the stanza has not already been determined
|
// Track the status over all repos if the status for the stanza has not already been determined
|
||||||
if (stanzaStatusCode != INFO_STANZA_STATUS_CODE_PG_MISMATCH)
|
if (stanzaStatusCode != INFO_STANZA_STATUS_CODE_PG_MISMATCH)
|
||||||
{
|
{
|
||||||
if (repoIdx == repoIdxStart)
|
if (repoIdx == repoIdxMin)
|
||||||
stanzaStatusCode = repoData->stanzaStatus;
|
stanzaStatusCode = repoData->stanzaStatus;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -678,7 +678,7 @@ stanzaInfoList(List *stanzaRepoList, const String *backupLabel, unsigned int rep
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Track cipher type over all repos
|
// Track cipher type over all repos
|
||||||
if (repoIdx == repoIdxStart)
|
if (repoIdx == repoIdxMin)
|
||||||
stanzaCipherType = repoData->cipher;
|
stanzaCipherType = repoData->cipher;
|
||||||
else
|
else
|
||||||
stanzaCipherType = stanzaCipherType != repoData->cipher ? INFO_STANZA_STATUS_CODE_MIXED : repoData->cipher;
|
stanzaCipherType = stanzaCipherType != repoData->cipher ? INFO_STANZA_STATUS_CODE_MIXED : repoData->cipher;
|
||||||
@ -694,7 +694,7 @@ stanzaInfoList(List *stanzaRepoList, const String *backupLabel, unsigned int rep
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get a sorted list of the data for all existing backups for this stanza over all repos
|
// Get a sorted list of the data for all existing backups for this stanza over all repos
|
||||||
backupList(backupSection, stanzaData, backupLabel, repoIdxStart, repoIdxMax);
|
backupList(backupSection, stanzaData, backupLabel, repoIdxMin, repoIdxMax);
|
||||||
kvPut(varKv(stanzaInfo), STANZA_KEY_BACKUP_VAR, varNewVarLst(backupSection));
|
kvPut(varKv(stanzaInfo), STANZA_KEY_BACKUP_VAR, varNewVarLst(backupSection));
|
||||||
|
|
||||||
static bool backupLockHeld = false;
|
static bool backupLockHeld = false;
|
||||||
@ -1153,18 +1153,18 @@ infoRender(void)
|
|||||||
THROW(ConfigError, "option '" CFGOPT_SET "' is currently only valid for text output");
|
THROW(ConfigError, "option '" CFGOPT_SET "' is currently only valid for text output");
|
||||||
|
|
||||||
// Initialize the repo index
|
// Initialize the repo index
|
||||||
unsigned int repoIdxStart = 0;
|
unsigned int repoIdxMin = 0;
|
||||||
unsigned int repoIdxMax = cfgOptionGroupIdxTotal(cfgOptGrpRepo);
|
unsigned int repoTotal = cfgOptionGroupIdxTotal(cfgOptGrpRepo);
|
||||||
unsigned int repoTotal = repoIdxMax;
|
unsigned int repoIdxMax = repoTotal - 1;
|
||||||
|
|
||||||
// If the repo was specified then set index to the array location and max to loop only once
|
// If the repo was specified then set index to the array location and max to loop only once
|
||||||
if (cfgOptionTest(cfgOptRepo))
|
if (cfgOptionTest(cfgOptRepo))
|
||||||
{
|
{
|
||||||
repoIdxStart = cfgOptionGroupIdxDefault(cfgOptGrpRepo);
|
repoIdxMin = cfgOptionGroupIdxDefault(cfgOptGrpRepo);
|
||||||
repoIdxMax = repoIdxStart + 1;
|
repoIdxMax = repoIdxMin;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (unsigned int repoIdx = repoIdxStart; repoIdx < repoIdxMax; repoIdx++)
|
for (unsigned int repoIdx = repoIdxMin; repoIdx <= repoIdxMax; repoIdx++)
|
||||||
{
|
{
|
||||||
// Get the repo storage in case it is remote and encryption settings need to be pulled down
|
// Get the repo storage in case it is remote and encryption settings need to be pulled down
|
||||||
const Storage *storageRepo = storageRepoIdx(repoIdx);
|
const Storage *storageRepo = storageRepoIdx(repoIdx);
|
||||||
@ -1247,7 +1247,7 @@ infoRender(void)
|
|||||||
|
|
||||||
// If the backup storage exists, then search for and process any stanzas
|
// If the backup storage exists, then search for and process any stanzas
|
||||||
if (!lstEmpty(stanzaRepoList))
|
if (!lstEmpty(stanzaRepoList))
|
||||||
infoList = stanzaInfoList(stanzaRepoList, backupLabel, repoIdxStart, repoIdxMax);
|
infoList = stanzaInfoList(stanzaRepoList, backupLabel, repoIdxMin, repoIdxMax);
|
||||||
|
|
||||||
// Format text output
|
// Format text output
|
||||||
if (strEq(cfgOptionStr(cfgOptOutput), CFGOPTVAL_INFO_OUTPUT_TEXT_STR))
|
if (strEq(cfgOptionStr(cfgOptOutput), CFGOPTVAL_INFO_OUTPUT_TEXT_STR))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user