summaryrefslogtreecommitdiff
path: root/rdiff-backup/rdiff_backup/backup.py
diff options
context:
space:
mode:
Diffstat (limited to 'rdiff-backup/rdiff_backup/backup.py')
-rw-r--r--rdiff-backup/rdiff_backup/backup.py19
1 files changed, 13 insertions, 6 deletions
diff --git a/rdiff-backup/rdiff_backup/backup.py b/rdiff-backup/rdiff_backup/backup.py
index 6284a6b..e152d8f 100644
--- a/rdiff-backup/rdiff_backup/backup.py
+++ b/rdiff-backup/rdiff_backup/backup.py
@@ -528,8 +528,11 @@ class PatchITRB(rorpiter.ITRBranch):
tf = TempFile.new(mirror_rp)
if self.patch_to_temp(mirror_rp, diff_rorp, tf):
if tf.lstat():
- rpath.rename(tf, mirror_rp)
- self.CCPP.flag_success(index)
+ if robust.check_common_error(self.error_handler, rpath.rename,
+ (tf, mirror_rp)) is None:
+ self.CCPP.flag_success(index)
+ else:
+ tf.delete()
elif mirror_rp and mirror_rp.lstat():
mirror_rp.delete()
self.CCPP.flag_deleted(index)
@@ -687,14 +690,18 @@ class IncrementITRB(PatchITRB):
self.CCPP.get_rorps(index), self.basis_root_rp, self.inc_root_rp)
tf = TempFile.new(mirror_rp)
if self.patch_to_temp(mirror_rp, diff_rorp, tf):
- inc = increment.Increment(tf, mirror_rp, inc_prefix)
- if inc is not None:
+ inc = robust.check_common_error(self.error_handler,
+ increment.Increment, (tf, mirror_rp, inc_prefix))
+ if inc is not None and not isinstance(inc, int):
self.CCPP.set_inc(index, inc)
if inc.isreg():
inc.fsync_with_dir() # Write inc before rp changed
if tf.lstat():
- rpath.rename(tf, mirror_rp)
- self.CCPP.flag_success(index)
+ if robust.check_common_error(self.error_handler,
+ rpath.rename, (tf, mirror_rp)) is None:
+ self.CCPP.flag_success(index)
+ else:
+ tf.delete()
elif mirror_rp.lstat():
mirror_rp.delete()
self.CCPP.flag_deleted(index)