num-retries ignored for some http errors
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Duplicity |
Fix Released
|
Medium
|
edso | ||
Debian |
Fix Released
|
Unknown
|
Bug Description
This is a forward of Debian bug #611465, which lives here: http://
Here is the original report:
Duplicity just stopped uploading an backup to a webdav server after receiving a HTTP 500 error - after successfully uploading 104 archives just before.
According to the log there were no retries:
-----
A somefile
AsyncScheduler: scheduling task for asynchronous execution
WebDAV PUT attempt #1 failed: 500 Internal Server Error
Saving /somepath/
AsyncScheduler: a previously scheduled task has failed; propagating the result immediately
AsyncScheduler: task execution done (success: False)
Traceback (most recent call last):
File "/usr/bin/
with_
File "/usr/bin/
fn()
-----
Command line used:
/usr/bin/duplicity --verbosity info --log-file "$HOME/
WebDAV Server is humyo.de, apparently sometimes their server returns an error, even when everything is fine.
In my opinion it would be good to just stick to the number of retries, probably even after a short waiting period (e.g. 10 seconds), probably with an option like "--retry-
Changed in debian: | |
status: | Unknown → Confirmed |
Changed in duplicity: | |
milestone: | 0.6.21 → 0.6.22 |
Changed in debian: | |
status: | Confirmed → Fix Released |
A broken TCP connection seems to result in the same issue (at least with webdavs):
INFO 1 logs/backup- dfrank. 2011-02- 05 13:18.log --encrypt-key=12345 --sign-key=12345 --asynchronous- upload --num-retries 20 --include- globbing- filelist /root/backup. dfrank. excl --full- if-older- than 3M /something webdavs://<email address hidden> /somepath/ duplicity
. Args: /usr/bin/duplicity --verbosity info --log-file /root/backup-
[... removed about 6000 lines ...]
INFO 12
. AsyncScheduler: scheduling task for asynchronous execution
INFO 14
. AsyncScheduler: task execution done (success: False)
INFO 14
. AsyncScheduler: a previously scheduled task has failed; propagating the result immediately
ERROR 30 SSLError duplicity" , line 1251, in <module> duplicity" , line 1244, in with_tempdir duplicity" , line 1217, in main col_stats) duplicity" , line 416, in full_backup duplicity" , line 315, in write_multivol python2. 6/dist- packages/ duplicity/ asyncscheduler. py", line 151, in schedule_task run_asynchronou sly(fn, params) python2. 6/dist- packages/ duplicity/ asyncscheduler. py", line 215, in __run_asynchron ously self.__ cv, wait_for_ and_register_ launch) python2. 6/dist- packages/ duplicity/ dup_threading. py", line 100, in with_lock python2. 6/dist- packages/ duplicity/ asyncscheduler. py", line 207, in wait_for_ and_register_ launch failure( ) # raise on fail python2. 6/dist- packages/ duplicity/ asyncscheduler. py", line 191, in check_pending_ failure failed_ waiter( ) python2. 6/dist- packages/ duplicity/ dup_threading. py", line 201, in caller python2. 6/dist- packages/ duplicity/ asyncscheduler. py", line 183, in <lambda> duplicity" , line 314, in <lambda> append( io_scheduler. schedule_ task(lambda tdp, dest_filename: put(tdp, dest_filename), duplicity" , line 240, in put python2. 6/dist- packages/ duplicity/ backends/ webdavbackend. py", line 251, in put python2. 6/dist- packages/ duplicity/ backends/ webdavbackend. py", line 106, in request request( method, quoted_path, data, self.headers) python2. 6/httplib. py", line 914, in request request( method, url, body, headers) python2. 6/httplib. py", line 954, in _send_request python2. 6/httplib. py", line 759, in send sendall( str) python2. 6/ssl.py" , line 203, in sendall data[count: ]) python2. 6/ssl.py" , line 174, in send
. Traceback (most recent call last):
. File "/usr/bin/
. with_tempdir(main)
. File "/usr/bin/
. fn()
. File "/usr/bin/
. full_backup(
. File "/usr/bin/
. globals.backend)
. File "/usr/bin/
. (tdp, dest_filename)))
. File "/usr/lib/
. return self.__
. File "/usr/lib/
. with_lock(
. File "/usr/lib/
. return fn()
. File "/usr/lib/
. check_pending_
. File "/usr/lib/
. self.__
. File "/usr/lib/
. value = fn()
. File "/usr/lib/
. (waiter, caller) = async_split(lambda: fn(*params))
. File "/usr/bin/
. async_waiters.
. File "/usr/bin/
. backend.put(tdp, dest_filename)
. File "/usr/lib/
. response = self.request("PUT", url, source_file.read())
. File "/usr/lib/
. self.conn.
. File "/usr/lib/
. self._send_
. File "/usr/lib/
. self.send(body)
. File "/usr/lib/
. self.sock.
. File "/usr/lib/
. v = self.send(
. File "/usr/lib/
Currently duplicity has not been able to finish a b...