summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-02-14 19:01:16 -0800
committerZac Medico <zmedico@gentoo.org>2012-02-14 19:01:16 -0800
commita16c54c0d5b891655bce89e5779e6b9221131ba7 (patch)
tree16a97e8fc9e1e4a7df0b209d40931f9b7a02d2c8
parentb1adb04939ce95ed522934e81c064046f6047c84 (diff)
downloadportage-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.py9
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)