AssertionError: first.difftype != "diff"
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Duplicity |
New
|
Undecided
|
Unassigned | ||
duplicity (Ubuntu) |
Confirmed
|
Undecided
|
Unassigned |
Bug Description
Sometimes when restoring or backing up, duplicity will crash with an AssertionError similar to the following:
Traceback (most recent call last):
File "/usr/local/
with_
File "/usr/local/
fn()
File "/usr/local/
restore(
File "/usr/local/
restore_
File "/usr/local/
for ropath in rop_iter:
File "/usr/local/
final_ropath = patch_seq2ropat
File "/usr/local/
assert first.difftype != "diff", patch_seq
AssertionError: [(('.duplicity', 'filelist') reg), (('.duplicity', 'filelist') reg)]
One reported workaround is to delete ~/.cache/duplicity and try again.
================
Original Report:
================
Duplicity version: 0.6.06
Python version: 2.5.4
OS: OpenBSD 4.8
Remote filesystem: ext3
Local filesystem: ffs
I've attached a verbose log of the duplicity output and errors. I've copied the backup files from the remote server to my local machine to rule out transmission issues.
The python process spins for a bit at 0.1% CPU usage, but then stops and top's TIME column doesn't increase. It continues to hang after that until I kill it.
As you can see in the log, there are several 'Operation not permitted' errors; however, the processing continues. Then there is an AssertionError, and that's the last thing that is displayed before the process hangs.
Also, here is a list of the files and directories that were restored:
restore
restore/.Xdefaults
restore/.cache
restore/
restore/
restore/
restore/.duplicity
restore/
Also, if there is a workaround so that I can retrieve my files, I'd greatly appreciate being pointed in the right direction.
summary: |
- Unable to restore backup; several errors then hang + Unable to restore: assert first.difftype != "diff" |
Changed in deja-dup: | |
importance: | Undecided → Critical |
status: | New → Confirmed |
affects: | deja-dup → duplicity (Ubuntu) |
Changed in duplicity (Ubuntu): | |
importance: | Critical → Undecided |
status: | Invalid → Confirmed |
summary: |
- Unable to restore: assert first.difftype != "diff" + AssertionError: first.difftype != "diff" |
description: | updated |
The first set of errors are due to the system being unable to 'chown' the files to their original owner. I don't think these are the main issue here.
I'm still familiarizing myself with the relevant parts of the code base, but here's my interpretation of the stack trace. At the time the exception is raised, duplicity is working on the following sequence of patches:
[(('.duplicity', 'filelist') reg), (('.duplicity', 'filelist') reg)]
When applying a set of patches, they must be applied in the order they were created, starting with the original file. In this case, the first patch in the sequence is a "diff", so an exception is raised.