summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-02-07 21:03:32 -0800
committerZac Medico <zmedico@gentoo.org>2012-02-07 22:08:45 -0800
commitc02b0e535a4cfe4dc0a3c3d07124b8dfa5d4f9a5 (patch)
tree5839602f294e457d32e0284ac43ad1a75a89f4d7
parent618ad1f92b6f768e5cc2f783cd1756ffe65b3fef (diff)
downloadportage-c02b0e535a4cfe4dc0a3c3d07124b8dfa5d4f9a5.tar.gz
portage-c02b0e535a4cfe4dc0a3c3d07124b8dfa5d4f9a5.tar.bz2
portage-c02b0e535a4cfe4dc0a3c3d07124b8dfa5d4f9a5.zip
QueueScheduler: tweak timeout handling
-rw-r--r--pym/_emerge/QueueScheduler.py27
1 files changed, 14 insertions, 13 deletions
diff --git a/pym/_emerge/QueueScheduler.py b/pym/_emerge/QueueScheduler.py
index 91a2831f6..e115ba1aa 100644
--- a/pym/_emerge/QueueScheduler.py
+++ b/pym/_emerge/QueueScheduler.py
@@ -1,8 +1,6 @@
-# Copyright 1999-2011 Gentoo Foundation
+# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-import time
-
from _emerge.PollScheduler import PollScheduler
class QueueScheduler(PollScheduler):
@@ -36,25 +34,28 @@ class QueueScheduler(PollScheduler):
def run(self, timeout=None):
- timeout_id = None
+ timeout_callback = None
if timeout is not None:
def timeout_callback():
- raise StopIteration()
- timeout_id = self._timeout_add(timeout, timeout_callback)
+ timeout_callback.timed_out = True
+ return False
+ timeout_callback.timed_out = False
+ timeout_callback.timeout_id = self._timeout_add(
+ timeout, timeout_callback)
try:
- while self._schedule():
+ while not (timeout_callback is not None and
+ timeout_callback.timed_out) and self._schedule():
self._iteration()
- while self._running_job_count():
+ while not (timeout_callback is not None and
+ timeout_callback.timed_out) and self._running_job_count():
self._iteration()
- except StopIteration:
- pass
-
- if timeout_id is not None:
- self._unregister(timeout_id)
+ finally:
+ if timeout_callback is not None:
+ self._unregister(timeout_callback.timeout_id)
def _schedule_tasks(self):
"""