diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-03-16 21:50:36 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-03-16 21:50:36 -0700 |
commit | f7b5b5f0da301d8f5c5585c21db238e28546c70f (patch) | |
tree | 685bb38b23431960ba723b04baed50a8a9d6b8e7 /pym/_emerge/Scheduler.py | |
parent | 9fa6881ac70e799e09fe98c1eb24177663f3b0e5 (diff) | |
download | portage-f7b5b5f0da301d8f5c5585c21db238e28546c70f.tar.gz portage-f7b5b5f0da301d8f5c5585c21db238e28546c70f.tar.bz2 portage-f7b5b5f0da301d8f5c5585c21db238e28546c70f.zip |
Scheduler: tweak prefetcher cancellation logic
This should prevent "TypeError: an integer is required" raised from
waitpid when trying to cancel a prefetcher that never started.
Diffstat (limited to 'pym/_emerge/Scheduler.py')
-rw-r--r-- | pym/_emerge/Scheduler.py | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py index b961e83c0..a1b0ae462 100644 --- a/pym/_emerge/Scheduler.py +++ b/pym/_emerge/Scheduler.py @@ -1821,6 +1821,14 @@ class Scheduler(PollScheduler): "installed", pkg.root_config, installed=True, operation="uninstall") + prefetcher = self._prefetchers.pop(pkg, None) + if prefetcher is not None and not prefetcher.isAlive(): + try: + self._task_queues.fetch._task_queue.remove(prefetcher) + except ValueError: + pass + prefetcher = None + task = MergeListItem(args_set=self._args_set, background=self._background, binpkg_opts=self._binpkg_opts, build_opts=self._build_opts, @@ -1830,7 +1838,7 @@ class Scheduler(PollScheduler): find_blockers=self._find_blockers(pkg), logger=self._logger, mtimedb=self._mtimedb, pkg=pkg, pkg_count=self._pkg_count.copy(), pkg_to_replace=pkg_to_replace, - prefetcher=self._prefetchers.get(pkg), + prefetcher=prefetcher, scheduler=self._sched_iface, settings=self._allocate_config(pkg.root), statusMessage=self._status_msg, |