diff options
author | Zac Medico <zmedico@gentoo.org> | 2012-02-14 19:01:16 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2012-02-14 19:01:16 -0800 |
commit | a16c54c0d5b891655bce89e5779e6b9221131ba7 (patch) | |
tree | 16a97e8fc9e1e4a7df0b209d40931f9b7a02d2c8 | |
parent | b1adb04939ce95ed522934e81c064046f6047c84 (diff) | |
download | portage-a16c54c0d5b891655bce89e5779e6b9221131ba7.tar.gz portage-a16c54c0d5b891655bce89e5779e6b9221131ba7.tar.bz2 portage-a16c54c0d5b891655bce89e5779e6b9221131ba7.zip |
Scheduler: PyPy WeakValueDictionary.pop KeyError
KeyError observed from WeakValueDictionary.pop() with PyPy 1.8,
despite None given as default. Note that PyPy 1.8 has the same
WeakValueDictionary code as CPython 2.7, so it may be possible for
CPython to raise KeyError here as well.
-rw-r--r-- | pym/_emerge/Scheduler.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py index 4b3702667..c797c3241 100644 --- a/pym/_emerge/Scheduler.py +++ b/pym/_emerge/Scheduler.py @@ -1620,7 +1620,14 @@ class Scheduler(PollScheduler): "installed", pkg.root_config, installed=True, operation="uninstall") - prefetcher = self._prefetchers.pop(pkg, None) + try: + prefetcher = self._prefetchers.pop(pkg, None) + except KeyError: + # KeyError observed with PyPy 1.8, despite None given as default. + # Note that PyPy 1.8 has the same WeakValueDictionary code as + # CPython 2.7, so it may be possible for CPython to raise KeyError + # here as well. + prefetcher = None if prefetcher is not None and not prefetcher.isAlive(): try: self._task_queues.fetch._task_queue.remove(prefetcher) |