Gentoo Archives: gentoo-commits

From: Zac Medico <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:master commit in: lib/_emerge/
Date: Fri, 06 Mar 2020 03:36:51
Message-Id: 1583465347.ca053dec87ea593596f83e8d20c63b40678bf03a.zmedico@gentoo
1 commit: ca053dec87ea593596f83e8d20c63b40678bf03a
2 Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
3 AuthorDate: Fri Mar 6 03:15:40 2020 +0000
4 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
5 CommitDate: Fri Mar 6 03:29:07 2020 +0000
6 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=ca053dec
7
8 Scheduler: replace add_done_callback with addExitListener
9
10 For simplicity, use addExitListener instead of add_done_callback, since
11 addExitListener has been fixed to use call_soon in commit 46903f3e5622.
12 Note that each addExitListener call occurs *after* a call to the
13 SequentialTaskQueue add method, since the SequentialTaskQueue needs to
14 be notified of task exit *first* (see commit 459b3535baa4).
15
16 Bug: https://bugs.gentoo.org/711322
17 Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>
18
19 lib/_emerge/Scheduler.py | 27 +++++++++++----------------
20 1 file changed, 11 insertions(+), 16 deletions(-)
21
22 diff --git a/lib/_emerge/Scheduler.py b/lib/_emerge/Scheduler.py
23 index 98bc789ff..ee8f3dd5e 100644
24 --- a/lib/_emerge/Scheduler.py
25 +++ b/lib/_emerge/Scheduler.py
26 @@ -4,7 +4,6 @@
27 from __future__ import division, print_function, unicode_literals
28
29 from collections import deque
30 -import functools
31 import gc
32 import gzip
33 import logging
34 @@ -1260,13 +1259,11 @@ class Scheduler(PollScheduler):
35 child not in completed_tasks:
36 unsatisfied.add(child)
37
38 - def _merge_wait_exit_handler(self, task, future):
39 - future.cancelled() or future.result()
40 + def _merge_wait_exit_handler(self, task):
41 self._merge_wait_scheduled.remove(task)
42 - self._merge_exit(task, future)
43 + self._merge_exit(task)
44
45 - def _merge_exit(self, merge, future):
46 - future.cancelled() or future.result()
47 + def _merge_exit(self, merge):
48 self._running_tasks.pop(id(merge), None)
49 self._do_merge_exit(merge)
50 self._deallocate_config(merge.merge.settings)
51 @@ -1330,8 +1327,7 @@ class Scheduler(PollScheduler):
52 del mtimedb["resume"]
53 mtimedb.commit()
54
55 - def _build_exit(self, build, future):
56 - future.cancelled() or future.result()
57 + def _build_exit(self, build):
58 self._running_tasks.pop(id(build), None)
59 if build.returncode == os.EX_OK and self._terminated_tasks:
60 # We've been interrupted, so we won't
61 @@ -1350,7 +1346,7 @@ class Scheduler(PollScheduler):
62 merge.addStartListener(self._system_merge_started)
63 else:
64 self._task_queues.merge.add(merge)
65 - merge.async_wait().add_done_callback(functools.partial(self._merge_exit, merge))
66 + merge.addExitListener(self._merge_exit)
67 self._status_display.merges = len(self._task_queues.merge)
68 else:
69 settings = build.settings
70 @@ -1369,9 +1365,8 @@ class Scheduler(PollScheduler):
71 self._status_display.running = self._jobs
72 self._schedule()
73
74 - def _extract_exit(self, build, future):
75 - future.cancelled() or future.result()
76 - self._build_exit(build, future)
77 + def _extract_exit(self, build):
78 + self._build_exit(build)
79
80 def _task_complete(self, pkg):
81 self._completed_tasks.add(pkg)
82 @@ -1588,7 +1583,7 @@ class Scheduler(PollScheduler):
83 task.scheduler = self._sched_iface
84 self._merge_wait_scheduled.append(task)
85 self._task_queues.merge.add(task)
86 - task.async_wait().add_done_callback(functools.partial(self._merge_wait_exit_handler, task))
87 + task.addExitListener(self._merge_wait_exit_handler)
88 self._status_display.merges = len(self._task_queues.merge)
89 state_change += 1
90
91 @@ -1708,7 +1703,7 @@ class Scheduler(PollScheduler):
92 merge = PackageMerge(merge=task, scheduler=self._sched_iface)
93 self._running_tasks[id(merge)] = merge
94 self._task_queues.merge.addFront(merge)
95 - merge.async_wait().add_done_callback(functools.partial(self._merge_exit, merge))
96 + merge.addExitListener(self._merge_exit)
97
98 elif pkg.built:
99 self._jobs += 1
100 @@ -1717,7 +1712,7 @@ class Scheduler(PollScheduler):
101 self._running_tasks[id(task)] = task
102 task.scheduler = self._sched_iface
103 self._task_queues.jobs.add(task)
104 - task.async_wait().add_done_callback(functools.partial(self._extract_exit, task))
105 + task.addExitListener(self._extract_exit)
106
107 else:
108 self._jobs += 1
109 @@ -1726,7 +1721,7 @@ class Scheduler(PollScheduler):
110 self._running_tasks[id(task)] = task
111 task.scheduler = self._sched_iface
112 self._task_queues.jobs.add(task)
113 - task.async_wait().add_done_callback(functools.partial(self._build_exit, task))
114 + task.addExitListener(self._build_exit)
115
116 return bool(state_change)