mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2024-12-14 10:13:05 +02:00
Update expire command to use C backup.info reconstruct.
This was still being done in Perl until the C Manifest object was available.
This commit is contained in:
parent
4e4d1f414a
commit
ecae5e34e5
@ -154,13 +154,6 @@ sub main
|
|||||||
|
|
||||||
new pgBackRest::Backup::Backup()->process();
|
new pgBackRest::Backup::Backup()->process();
|
||||||
}
|
}
|
||||||
|
|
||||||
# Process expire command
|
|
||||||
# ----------------------------------------------------------------------------------------------------------------------
|
|
||||||
elsif (cfgCommandTest(CFGCMD_EXPIRE))
|
|
||||||
{
|
|
||||||
new pgBackRest::Backup::Info(storageRepo()->pathGet(STORAGE_REPO_BACKUP));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -63,7 +63,7 @@ expireBackup(InfoBackup *infoBackup, String *removeBackupLabel, String *backupEx
|
|||||||
storageRemoveNP(
|
storageRemoveNP(
|
||||||
storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE INFO_COPY_EXT, strPtr(removeBackupLabel)));
|
storageRepoWrite(), strNewFmt(STORAGE_REPO_BACKUP "/%s/" BACKUP_MANIFEST_FILE INFO_COPY_EXT, strPtr(removeBackupLabel)));
|
||||||
|
|
||||||
// Remove the backup from the info file
|
// Remove the backup from the info object
|
||||||
infoBackupDataDelete(infoBackup, removeBackupLabel);
|
infoBackupDataDelete(infoBackup, removeBackupLabel);
|
||||||
|
|
||||||
if (strSize(backupExpired) == 0)
|
if (strSize(backupExpired) == 0)
|
||||||
@ -632,7 +632,7 @@ cmdExpire(void)
|
|||||||
storageRepo();
|
storageRepo();
|
||||||
|
|
||||||
// Load the backup.info
|
// Load the backup.info
|
||||||
InfoBackup *infoBackup = infoBackupLoadFile(
|
InfoBackup *infoBackup = infoBackupLoadFileReconstruct(
|
||||||
storageRepo(), INFO_BACKUP_PATH_FILE_STR, cipherType(cfgOptionStr(cfgOptRepoCipherType)),
|
storageRepo(), INFO_BACKUP_PATH_FILE_STR, cipherType(cfgOptionStr(cfgOptRepoCipherType)),
|
||||||
cfgOptionStr(cfgOptRepoCipherPass));
|
cfgOptionStr(cfgOptRepoCipherPass));
|
||||||
|
|
||||||
|
@ -124,7 +124,6 @@ main(int argListSize, const char *argList[])
|
|||||||
cmdBegin(true);
|
cmdBegin(true);
|
||||||
|
|
||||||
// Run expire
|
// Run expire
|
||||||
perlExec();
|
|
||||||
cmdExpire();
|
cmdExpire();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
@ -8321,11 +8321,6 @@ static const EmbeddedModule embeddedModule[] =
|
|||||||
"\n"
|
"\n"
|
||||||
"new pgBackRest::Backup::Backup()->process();\n"
|
"new pgBackRest::Backup::Backup()->process();\n"
|
||||||
"}\n"
|
"}\n"
|
||||||
"\n\n\n"
|
|
||||||
"elsif (cfgCommandTest(CFGCMD_EXPIRE))\n"
|
|
||||||
"{\n"
|
|
||||||
"new pgBackRest::Backup::Info(storageRepo()->pathGet(STORAGE_REPO_BACKUP));\n"
|
|
||||||
"}\n"
|
|
||||||
"}\n"
|
"}\n"
|
||||||
"\n"
|
"\n"
|
||||||
"return 1;\n"
|
"return 1;\n"
|
||||||
|
@ -723,11 +723,36 @@ testRun(void)
|
|||||||
strLstAddZ(argList, "--repo1-retention-archive-type=diff");
|
strLstAddZ(argList, "--repo1-retention-archive-type=diff");
|
||||||
harnessCfgLoad(cfgCmdExpire, argList);
|
harnessCfgLoad(cfgCmdExpire, argList);
|
||||||
|
|
||||||
|
// Write backup.manifest so infoBackup reconstruct produces same results as backup.info on disk
|
||||||
|
storagePutNP(
|
||||||
|
storageNewWriteNP(storageTest, strNewFmt("%s/20181119-152138F/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))),
|
||||||
|
BUFSTRDEF("tmp"));
|
||||||
|
storagePutNP(
|
||||||
|
storageNewWriteNP(storageTest, strNewFmt("%s/20181119-152800F/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))),
|
||||||
|
BUFSTRDEF("tmp"));
|
||||||
|
storagePutNP(
|
||||||
|
storageNewWriteNP(storageTest, strNewFmt("%s/20181119-152800F_20181119-152152D/" BACKUP_MANIFEST_FILE,
|
||||||
|
strPtr(backupStanzaPath))), BUFSTRDEF("tmp"));
|
||||||
|
storagePutNP(
|
||||||
|
storageNewWriteNP(storageTest, strNewFmt("%s/20181119-152800F_20181119-152155I/" BACKUP_MANIFEST_FILE,
|
||||||
|
strPtr(backupStanzaPath))), BUFSTRDEF("tmp"));
|
||||||
|
storagePutNP(
|
||||||
|
storageNewWriteNP(storageTest, strNewFmt("%s/20181119-152800F_20181119-152252D/" BACKUP_MANIFEST_FILE,
|
||||||
|
strPtr(backupStanzaPath))), BUFSTRDEF("tmp"));
|
||||||
|
storagePutNP(
|
||||||
|
storageNewWriteNP(storageTest, strNewFmt("%s/20181119-152900F/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))),
|
||||||
|
BUFSTRDEF("tmp"));
|
||||||
|
storagePutNP(
|
||||||
|
storageNewWriteNP(storageTest, strNewFmt("%s/20181119-152900F_20181119-152500I/" BACKUP_MANIFEST_FILE,
|
||||||
|
strPtr(backupStanzaPath))), BUFSTRDEF("tmp"));
|
||||||
|
|
||||||
TEST_RESULT_VOID(cmdExpire(), "expire last backup in archive sub path and remove sub path");
|
TEST_RESULT_VOID(cmdExpire(), "expire last backup in archive sub path and remove sub path");
|
||||||
TEST_RESULT_BOOL(
|
TEST_RESULT_BOOL(
|
||||||
storagePathExistsNP(storageTest, strNewFmt("%s/%s", strPtr(archiveStanzaPath), "9.4-1/0000000100000000")),
|
storagePathExistsNP(storageTest, strNewFmt("%s/%s", strPtr(archiveStanzaPath), "9.4-1/0000000100000000")),
|
||||||
false, " archive sub path removed");
|
false, " archive sub path removed");
|
||||||
harnessLogResult("P00 INFO: expire full backup 20181119-152138F");
|
harnessLogResult(
|
||||||
|
"P00 INFO: expire full backup 20181119-152138F\n"
|
||||||
|
"P00 INFO: remove expired backup 20181119-152138F");
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------------------------------
|
||||||
argList = strLstDup(argListAvoidWarn);
|
argList = strLstDup(argListAvoidWarn);
|
||||||
@ -742,6 +767,10 @@ testRun(void)
|
|||||||
harnessLogResult(strPtr(strNewFmt(
|
harnessLogResult(strPtr(strNewFmt(
|
||||||
"P00 INFO: expire full backup set: 20181119-152800F, 20181119-152800F_20181119-152152D, "
|
"P00 INFO: expire full backup set: 20181119-152800F, 20181119-152800F_20181119-152152D, "
|
||||||
"20181119-152800F_20181119-152155I, 20181119-152800F_20181119-152252D\n"
|
"20181119-152800F_20181119-152155I, 20181119-152800F_20181119-152252D\n"
|
||||||
|
"P00 INFO: remove expired backup 20181119-152800F_20181119-152252D\n"
|
||||||
|
"P00 INFO: remove expired backup 20181119-152800F_20181119-152155I\n"
|
||||||
|
"P00 INFO: remove expired backup 20181119-152800F_20181119-152152D\n"
|
||||||
|
"P00 INFO: remove expired backup 20181119-152800F\n"
|
||||||
"P00 INFO: remove archive path: %s/%s/9.4-1", testPath(), strPtr(archiveStanzaPath))));
|
"P00 INFO: remove archive path: %s/%s/9.4-1", testPath(), strPtr(archiveStanzaPath))));
|
||||||
|
|
||||||
TEST_ASSIGN(infoBackup, infoBackupLoadFile(storageTest, backupInfoFileName, cipherTypeNone, NULL), " get backup.info");
|
TEST_ASSIGN(infoBackup, infoBackupLoadFile(storageTest, backupInfoFileName, cipherTypeNone, NULL), " get backup.info");
|
||||||
@ -890,6 +919,18 @@ testRun(void)
|
|||||||
"2={\"db-catalog-version\":201707211,\"db-control-version\":1002,\"db-system-id\":6626363367545678089,"
|
"2={\"db-catalog-version\":201707211,\"db-control-version\":1002,\"db-system-id\":6626363367545678089,"
|
||||||
"\"db-version\":\"10\"}\n"));
|
"\"db-version\":\"10\"}\n"));
|
||||||
|
|
||||||
|
// Write backup.manifest so infoBackup reconstruct produces same results as backup.info on disk and removeExpiredBackup
|
||||||
|
// will find backup directories to remove
|
||||||
|
storagePutNP(
|
||||||
|
storageNewWriteNP(storageTest, strNewFmt("%s/20181119-152138F/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))),
|
||||||
|
BUFSTRDEF("tmp"));
|
||||||
|
storagePutNP(
|
||||||
|
storageNewWriteNP(storageTest, strNewFmt("%s/20181119-152800F/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))),
|
||||||
|
BUFSTRDEF("tmp"));
|
||||||
|
storagePutNP(
|
||||||
|
storageNewWriteNP(storageTest, strNewFmt("%s/20181119-152900F/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))),
|
||||||
|
BUFSTRDEF("tmp"));
|
||||||
|
|
||||||
storagePutNP(
|
storagePutNP(
|
||||||
storageNewWriteNP(storageTest, archiveInfoFileName),
|
storageNewWriteNP(storageTest, archiveInfoFileName),
|
||||||
harnessInfoChecksumZ(
|
harnessInfoChecksumZ(
|
||||||
@ -907,7 +948,9 @@ testRun(void)
|
|||||||
archiveGenerate(storageTest, archiveStanzaPath, 1, 7, "10-2", "0000000100000000");
|
archiveGenerate(storageTest, archiveStanzaPath, 1, 7, "10-2", "0000000100000000");
|
||||||
|
|
||||||
TEST_ERROR(cmdExpire(), FormatError, "archive expiration cannot continue - archive and backup history lists do not match");
|
TEST_ERROR(cmdExpire(), FormatError, "archive expiration cannot continue - archive and backup history lists do not match");
|
||||||
harnessLogResult("P00 INFO: expire full backup 20181119-152138F");
|
harnessLogResult(
|
||||||
|
"P00 INFO: expire full backup 20181119-152138F\n"
|
||||||
|
"P00 INFO: remove expired backup 20181119-152138F");
|
||||||
TEST_RESULT_STR(
|
TEST_RESULT_STR(
|
||||||
strPtr(strLstJoin(strLstSort(storageListNP(
|
strPtr(strLstJoin(strLstSort(storageListNP(
|
||||||
storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "10-1", "0000000100000000")), sortOrderAsc), ", ")),
|
storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "10-1", "0000000100000000")), sortOrderAsc), ", ")),
|
||||||
@ -994,6 +1037,18 @@ testRun(void)
|
|||||||
"2={\"db-catalog-version\":201707211,\"db-control-version\":1002,\"db-system-id\":6626363367545678089,"
|
"2={\"db-catalog-version\":201707211,\"db-control-version\":1002,\"db-system-id\":6626363367545678089,"
|
||||||
"\"db-version\":\"10\"}\n"));
|
"\"db-version\":\"10\"}\n"));
|
||||||
|
|
||||||
|
// Write backup.manifest so infoBackup reconstruct produces same results as backup.info on disk and removeExpiredBackup
|
||||||
|
// will find backup directories to remove
|
||||||
|
storagePutNP(
|
||||||
|
storageNewWriteNP(storageTest, strNewFmt("%s/20181119-152138F/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))),
|
||||||
|
BUFSTRDEF("tmp"));
|
||||||
|
storagePutNP(
|
||||||
|
storageNewWriteNP(storageTest, strNewFmt("%s/20181119-152800F/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))),
|
||||||
|
BUFSTRDEF("tmp"));
|
||||||
|
storagePutNP(
|
||||||
|
storageNewWriteNP(storageTest, strNewFmt("%s/20181119-152900F/" BACKUP_MANIFEST_FILE, strPtr(backupStanzaPath))),
|
||||||
|
BUFSTRDEF("tmp"));
|
||||||
|
|
||||||
storagePutNP(
|
storagePutNP(
|
||||||
storageNewWriteNP(storageTest, archiveInfoFileName),
|
storageNewWriteNP(storageTest, archiveInfoFileName),
|
||||||
harnessInfoChecksumZ(
|
harnessInfoChecksumZ(
|
||||||
@ -1014,7 +1069,11 @@ testRun(void)
|
|||||||
// here we are testing that things on disk that we are not aware of are not touched.
|
// here we are testing that things on disk that we are not aware of are not touched.
|
||||||
TEST_RESULT_VOID(cmdExpire(), "Expire archive that archive.info is aware of");
|
TEST_RESULT_VOID(cmdExpire(), "Expire archive that archive.info is aware of");
|
||||||
|
|
||||||
harnessLogResult("P00 INFO: expire full backup 20181119-152138F\nP00 INFO: expire full backup 20181119-152800F");
|
harnessLogResult(
|
||||||
|
"P00 INFO: expire full backup 20181119-152138F\n"
|
||||||
|
"P00 INFO: expire full backup 20181119-152800F\n"
|
||||||
|
"P00 INFO: remove expired backup 20181119-152800F\n"
|
||||||
|
"P00 INFO: remove expired backup 20181119-152138F");
|
||||||
TEST_RESULT_STR(
|
TEST_RESULT_STR(
|
||||||
strPtr(strLstJoin(strLstSort(storageListNP(
|
strPtr(strLstJoin(strLstSort(storageListNP(
|
||||||
storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "10-1", "0000000100000000")), sortOrderAsc), ", ")),
|
storageTest, strNewFmt("%s/%s/%s", strPtr(archiveStanzaPath), "10-1", "0000000100000000")), sortOrderAsc), ", ")),
|
||||||
|
Loading…
Reference in New Issue
Block a user