aboutsummaryrefslogtreecommitdiff
path: root/pym
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 /pym
parentSpawnProcess: for stdout use os.write, not fdopen (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.
Diffstat (limited to 'pym')
-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)