summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-08-13 12:33:48 -0700
committerZac Medico <zmedico@gentoo.org>2010-08-13 12:33:48 -0700
commitdd865104978471af4ad8d09490c6c42873dba926 (patch)
treef7d31cee86ff61fb749c338913c924dd9068d3b7 /pym
parentbf44d07fa05554246a1b2087b3a02117113b944c (diff)
downloadportage-dd865104978471af4ad8d09490c6c42873dba926.tar.gz
portage-dd865104978471af4ad8d09490c6c42873dba926.tar.bz2
portage-dd865104978471af4ad8d09490c6c42873dba926.zip
Handle KeyError due to stale events.
Diffstat (limited to 'pym')
-rw-r--r--pym/_emerge/PollScheduler.py20
1 files changed, 14 insertions, 6 deletions
diff --git a/pym/_emerge/PollScheduler.py b/pym/_emerge/PollScheduler.py
index 704ddc317..ea8ebaacf 100644
--- a/pym/_emerge/PollScheduler.py
+++ b/pym/_emerge/PollScheduler.py
@@ -161,9 +161,13 @@ class PollScheduler(object):
try:
while event_handlers and self._poll_event_queue:
f, event = self._next_poll_event()
- handler, reg_id = event_handlers[f]
- handler(f, event)
- events_handled += 1
+ try:
+ handler, reg_id = event_handlers[f]
+ except KeyError:
+ pass
+ else:
+ handler(f, event)
+ events_handled += 1
except StopIteration:
events_handled += 1
@@ -210,9 +214,13 @@ class PollScheduler(object):
try:
while wait_ids.intersection(handler_ids):
f, event = self._next_poll_event(timeout=timeout)
- handler, reg_id = event_handlers[f]
- handler(f, event)
- event_handled = True
+ try:
+ handler, reg_id = event_handlers[f]
+ except KeyError:
+ pass
+ else:
+ handler(f, event)
+ event_handled = True
if timeout is not None:
if 1000 * time.time() - start_time >= timeout:
break