fix(authz): make failed deployment retries safe
This commit is contained in:
parent
3acf4a1504
commit
3edca726c1
2 changed files with 18 additions and 2 deletions
|
|
@ -259,8 +259,14 @@ function backupFile(source, backup, records) {
|
|||
const stat = fs.lstatSync(source);
|
||||
if (!stat.isFile() || stat.isSymbolicLink()) throw new Error("backup_source_not_regular_file");
|
||||
fs.mkdirSync(path.dirname(backup), { recursive: true, mode: 0o700 });
|
||||
fs.copyFileSync(source, backup, fs.constants.COPYFILE_EXCL);
|
||||
fs.chmodSync(backup, stat.mode & 0o777);
|
||||
if (fs.existsSync(backup)) {
|
||||
const backupStat = fs.lstatSync(backup);
|
||||
if (!backupStat.isFile() || backupStat.isSymbolicLink()) throw new Error("backup_conflict");
|
||||
if (!fs.readFileSync(source).equals(fs.readFileSync(backup))) throw new Error("backup_conflict");
|
||||
} else {
|
||||
fs.copyFileSync(source, backup, fs.constants.COPYFILE_EXCL);
|
||||
fs.chmodSync(backup, stat.mode & 0o777);
|
||||
}
|
||||
records.push({ source, backup, existed: true, mode: stat.mode & 0o777 });
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue