You've already forked pgbackrest
mirror of
https://github.com/pgbackrest/pgbackrest.git
synced 2025-07-13 01:00:23 +02:00
Add write fault-tolerance to archive-push command.
The archive-push command will continue to push even after it gets a write error on one or more repos. The idea is to archive to as many repos as possible even we still need to throw an error to PostgreSQL to prevent it from removing the WAL file.
This commit is contained in:
@ -521,11 +521,38 @@ testRun(void)
|
||||
true, "check repo3 for WAL file");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("remove WAL from one repo and push again");
|
||||
TEST_TITLE("write error on one repo but other repo succeeds");
|
||||
|
||||
storageRemoveP(
|
||||
storageTest, strNewFmt("repo2/archive/test/11-1/0000000100000001/000000010000000100000002-%s", walBuffer2Sha1),
|
||||
.errorOnMissing = true);
|
||||
storageRemoveP(
|
||||
storageTest, strNewFmt("repo3/archive/test/11-1/0000000100000001/000000010000000100000002-%s", walBuffer2Sha1),
|
||||
.errorOnMissing = true);
|
||||
|
||||
HRN_STORAGE_MODE(storageTest, "repo2/archive/test/11-1/0000000100000001", .mode = 0500);
|
||||
|
||||
TEST_ERROR(
|
||||
cmdArchivePush(), CommandError,
|
||||
strZ(
|
||||
strNewFmt(
|
||||
"archive-push command encountered error(s):\n"
|
||||
"repo2: [FileOpenError] unable to open file '" TEST_PATH "/repo2/archive/test/11-1/0000000100000001"
|
||||
"/000000010000000100000002-%s' for write: [13] Permission denied", walBuffer2Sha1)));
|
||||
|
||||
TEST_RESULT_BOOL(
|
||||
storageExistsP(
|
||||
storageTest, strNewFmt("repo2/archive/test/11-1/0000000100000001/000000010000000100000002-%s", walBuffer2Sha1)),
|
||||
false, "check repo2 for no WAL file");
|
||||
TEST_RESULT_BOOL(
|
||||
storageExistsP(
|
||||
storageTest, strNewFmt("repo3/archive/test/11-1/0000000100000001/000000010000000100000002-%s", walBuffer2Sha1)),
|
||||
true, "check repo3 for WAL file");
|
||||
|
||||
HRN_STORAGE_MODE(storageTest, "repo2/archive/test/11-1/0000000100000001");
|
||||
|
||||
// -------------------------------------------------------------------------------------------------------------------------
|
||||
TEST_TITLE("push WAL to one repo");
|
||||
|
||||
TEST_RESULT_VOID(cmdArchivePush(), "push the WAL segment");
|
||||
harnessLogResult(
|
||||
|
Reference in New Issue
Block a user