One of my clients encountered an interesting bug in rdiff-backup - under certain conditions, if a file changes while it is being backed up, rdiff-backup throws an unhandled exception. The surface problem is that rdiff-backup tries to read a Windows ACL from a file on linux, and dies as a result.

I've found why the problem is happening, but I don't understand why this isn't already a problem with extended attributes, or why it doesn't happen more often.

The basic story, as far as I can tell:
* The backup is Windows -> Linux.
* rdiff-backup tries to update the file; it changes while updating, so it never gets updated. * In CacheCollatedPostProcess::post_process, we see that the file wasn't updated, so we decide to get the metadata from the destination file. * The metadata writer starts to write the file. Since it's recording ACLs, it tries to load them from the source rp. * The metadata source rp is on a linux system, so it obviously can't load Windows ACLs. * rdiff-backup crashes because of the except line in load_from_rp, since it's trying to catch exceptions of type pywintypes.error, and it never imported pywintypes.error.

If nobody has more ideas on this one, I'm going to commit a localized fix to win_acls.py to simply return a blank ACL when it can't import the necessary modules.

Thanks,
JoshN
_______________________________________________
rdiff-backup-users mailing list at rdiff-backup-users@nongnu.org
http://lists.nongnu.org/mailman/listinfo/rdiff-backup-users
Wiki URL: http://rdiff-backup.solutionsfirst.com.au/index.php/RdiffBackupWiki

Reply via email to