B2 backend doesn't work with latest version of 'b2'
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Duplicity |
Fix Released
|
Medium
|
Unassigned |
Bug Description
Duplicity version: 0.7.12
Python version: 2.7.12
OS Distro and version: Ubuntu 16.04
Type of target filesystem: Linux
Log output:
# duplicity --verbosity debug --archive-dir /cache /backup b2://$B2_
Backing up to b2://$B2_
Using archive dir: /cache/
Using backup name: f2c3af886cbcb46
GPG binary is gpg, version 1.4.20
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
Import of duplicity.
B2 Backend (path= , bucket= pc-backup, minimum_part_size= 100000000)
Bucket found
Main action: inc
Acquiring lockfile /cache/
=======
duplicity 0.7.17 (February 26, 2018)
Args: /usr/local/
Linux backup 4.15.2-
/usr/bin/python2 2.7.12 (default, Dec 4 2017, 14:50:18)
[GCC 5.4.0 20160609]
=======
Using temporary directory /tmp/duplicity-
Registering (mkstemp) temporary file /tmp/duplicity-
Temp has 1000001536 available, backup will use approx 272629760.
Local and Remote metadata are synchronized, no sync needed.
6 files exist on backend
5 files exist in cache
Extracting backup chains from list of files: [u'duplicity-
File duplicity-
Ignoring file (rejected by backup set) 'duplicity-
File duplicity-
File duplicity-
File duplicity-
File duplicity-
File duplicity-
Ignoring file (rejected by backup set) 'duplicity-
Found backup chain [Sun Aug 5 20:33:49 2018]-[Sun Aug 5 20:33:49 2018]
Added incremental Backupset (start_time: Sun Aug 5 20:33:49 2018 / end_time: Sun Aug 5 20:34:14 2018)
Added set Sun Aug 5 20:34:14 2018 to pre-existing chain [Sun Aug 5 20:33:49 2018]-[Sun Aug 5 20:34:14 2018]
Last full backup date: Sun Aug 5 20:33:49 2018
Collection Status
-----------------
Connecting with backend: BackendWrapper
Archive dir: /cache/
Found 0 secondary backup chains.
Found primary backup chain with matching signature chain:
-------
Chain start time: Sun Aug 5 20:33:49 2018
Chain end time: Sun Aug 5 20:34:14 2018
Number of contained backup sets: 2
Total number of contained volumes: 2
Type of backup set: Time: Num volumes:
-------
No orphaned or incomplete backup sets found.
Registering (mktemp) temporary file /tmp/duplicity-
Get: duplicity-
Deleting /tmp/duplicity-
Forgetting temporary file /tmp/duplicity-
Processing remote manifest duplicity-
Found manifest volume 1
Found 1 volumes in manifest
Processing local manifest /cache/
Found manifest volume 1
Found 1 volumes in manifest
Using temporary directory /cache/
Registering (mktemp) temporary file /cache/
Using temporary directory /cache/
Registering (mktemp) temporary file /cache/
AsyncScheduler: instantiating at concurrency 0
Registering (mktemp) temporary file /tmp/duplicity-
Selecting /backup
Comparing . and .
Selection: examining path /backup/
Selection: + no selection functions found. Including
Selecting /backup/
Comparing backup-
Selection: examining path /backup/
Selection: + no selection functions found. Including
Selecting /backup/
Comparing backup.
Selection: examining path /backup/
Selection: + no selection functions found. Including
Selecting /backup/
Comparing backup.
Selection: examining path /backup/
Selection: + no selection functions found. Including
Selecting /backup/
Comparing backup.
Selection: examining path /backup/
Selection: + no selection functions found. Including
Selecting /backup/
Comparing backup.
Selection: examining path /backup/
Selection: + no selection functions found. Including
Selecting /backup/
Comparing backup.
Selection: examining path /backup/
Selection: + no selection functions found. Including
Selecting /backup/
Comparing backup.
Selection: examining path /backup/foo
Selection: + no selection functions found. Including
Selecting /backup/foo
Comparing foo and foo
Removing still remembered temporary file /cache/
Removing still remembered temporary file /cache/
AsyncScheduler: running task synchronously (asynchronicity disabled)
Writing duplicity-
Put: /tmp/duplicity-
Backtrace of previous error: Traceback (innermost last):
File "/usr/local/
return fn(self, *args)
File "/usr/local/
self.
File "/usr/local/
self.
File "/usr/local/
progress_
File "/usr/local/
return function(
File "/usr/local/
progress_
File "/usr/local/
return function(
File "/usr/local/
return f.result()
File "/usr/local/
return self.__get_result()
File "/usr/local/
result = self.fn(*self.args, **self.kwargs)
File "/usr/local/
with progress_listener:
AttributeError: B2ProgressListener instance has no attribute '__exit__'
Attempt 1 failed. AttributeError: B2ProgressListener instance has no attribute '__exit__'
I received the error above then trying to use duplicity with b2 from master (https:/
Per the b2 code, objects passed to upload should adhere to b2.progress.
I have attached a patch that fixes the issue.
Changed in duplicity: | |
status: | In Progress → Fix Committed |
assignee: | Kenneth Loafman (kenneth-loafman) → nobody |
Changed in duplicity: | |
status: | Fix Committed → Fix Released |
Is this backwards compatible with previous B2 releases, i.e. pip, repo?