summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-07-29 19:30:37 +0000
committerZac Medico <zmedico@gentoo.org>2008-07-29 19:30:37 +0000
commit46c51bf2bf6ad2cf07cf7c28979d53f4f3db1fee (patch)
treec5bbb0f11c8c233d8155d03b631eddeb9fc3b5f7
parent991773242ebdb8203b641d3c1db073b332485ef5 (diff)
downloadportage-46c51bf2bf6ad2cf07cf7c28979d53f4f3db1fee.tar.gz
portage-46c51bf2bf6ad2cf07cf7c28979d53f4f3db1fee.tar.bz2
portage-46c51bf2bf6ad2cf07cf7c28979d53f4f3db1fee.zip
Disable auto_schedule on all of Scheduler._task_queues and schedule them
inside _schedule_tasks(). This should help solve a tight loop. svn path=/main/trunk/; revision=11269
-rw-r--r--pym/_emerge/__init__.py12
1 files changed, 4 insertions, 8 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index 6951590db..3fee85d03 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -8826,13 +8826,7 @@ class Scheduler(PollScheduler):
self._task_queues = self._task_queues_class()
for k in self._task_queues.allowed_keys:
setattr(self._task_queues, k,
- SequentialTaskQueue(auto_schedule=True))
-
- # Merge tasks currently run synchronously which makes
- # it necessary to disable auto_schedule in order to
- # avoid excess recursion which prevents tasks from
- # being marked complete as soon as they should be.
- self._task_queues.merge.auto_schedule = False
+ SequentialTaskQueue())
self._prefetchers = weakref.WeakValueDictionary()
self._pkg_queue = []
@@ -9654,7 +9648,9 @@ class Scheduler(PollScheduler):
self._poll_loop()
def _schedule_tasks(self):
- self._task_queues.merge.schedule()
+ remaining, state_change = self._schedule_tasks_imp()
+ for q in self._task_queues.values():
+ q.schedule()
# Cancel prefetchers if they're the only reason
# the main poll loop is still running.