diff options
author | Zac Medico <zmedico@gentoo.org> | 2010-08-13 12:33:48 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2010-08-13 12:33:48 -0700 |
commit | dd865104978471af4ad8d09490c6c42873dba926 (patch) | |
tree | f7d31cee86ff61fb749c338913c924dd9068d3b7 | |
parent | bf44d07fa05554246a1b2087b3a02117113b944c (diff) | |
download | portage-dd865104978471af4ad8d09490c6c42873dba926.tar.gz portage-dd865104978471af4ad8d09490c6c42873dba926.tar.bz2 portage-dd865104978471af4ad8d09490c6c42873dba926.zip |
Handle KeyError due to stale events.
-rw-r--r-- | pym/_emerge/PollScheduler.py | 20 |
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 |