Chase Sterling : Fix issue when saving resume data fails.

0 views
Skip to first unread message

g...@deluge-torrent.org

unread,
Dec 10, 2012, 8:22:58 PM12/10/12
to deluge...@googlegroups.com
Module: deluge
Branch: master
Commit: ca1a5d33f487e9f7983090041d8f20af3aa5d1e8

Author: Chase Sterling <chase.s...@gmail.com>
Date: Mon Dec 10 20:10:37 2012 -0500

Fix issue when saving resume data fails.
Clean up resume data deferred code a bit.

---

deluge/core/torrentmanager.py | 14 +++++++-------
1 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/deluge/core/torrentmanager.py b/deluge/core/torrentmanager.py
index 2387741..9831646 100644
--- a/deluge/core/torrentmanager.py
+++ b/deluge/core/torrentmanager.py
@@ -41,7 +41,6 @@ import os
import shutil
import operator
import logging
-from collections import defaultdict

from twisted.internet.task import LoopingCall
from twisted.internet.defer import Deferred, DeferredList
@@ -153,7 +152,7 @@ class TorrentManager(component.Component):

# This is a map of torrent_ids to Deferreds used to track needed resume data.
# The Deferreds will be completed when resume data has been saved.
- self.waiting_on_resume_data = defaultdict(list)
+ self.waiting_on_resume_data = {}

# Keeps track of resume data
self.resume_data = {}
@@ -765,8 +764,10 @@ class TorrentManager(component.Component):
self.waiting_on_resume_data.pop(torrent_id, None)

for torrent_id in torrent_ids:
- d = Deferred().addBoth(on_torrent_resume_save, torrent_id)
- self.waiting_on_resume_data[torrent_id].append(d)
+ d = self.waiting_on_resume_data.get(torrent_id)
+ if not d:
+ d = Deferred().addBoth(on_torrent_resume_save, torrent_id)
+ self.waiting_on_resume_data[torrent_id] = d
deferreds.append(d)
self.torrents[torrent_id].save_resume_data()

@@ -1043,12 +1044,11 @@ class TorrentManager(component.Component):
self.resume_data[torrent_id] = lt.bencode(alert.resume_data)

if torrent_id in self.waiting_on_resume_data:
- for d in self.waiting_on_resume_data[torrent_id]:
- d.callback(None)
+ self.waiting_on_resume_data[torrent_id].callback(None)

def on_alert_save_resume_data_failed(self, alert):
log.debug("on_alert_save_resume_data_failed: %s", alert.message())
- torrent_id = alert.handle.info_hash()
+ torrent_id = str(alert.handle.info_hash())

if torrent_id in self.waiting_on_resume_data:
self.waiting_on_resume_data[torrent_id].errback(Exception(alert.message()))

Reply all
Reply to author
Forward
0 new messages