Module: deluge
Branch: master
Commit: ca1a5d33f487e9f7983090041d8f20af3aa5d1e8

Author: Chase Sterling <[email protected]>
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()))

-- 
You received this message because you are subscribed to the Google Groups 
"deluge-commit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/deluge-commit?hl=en.

Reply via email to