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: Sat, 07 Mar 2020 20:14:23
Message-Id: 1583610846.50da2e16599202b9ecb3d4494f214a0d30b073d7.zmedico@gentoo
1 commit: 50da2e16599202b9ecb3d4494f214a0d30b073d7
2 Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
3 AuthorDate: Sat Mar 7 19:41:49 2020 +0000
4 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
5 CommitDate: Sat Mar 7 19:54:06 2020 +0000
6 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=50da2e16
7
8 AsynchronousTask: simplify isAlive (bug 711688)
9
10 Simplify all AsynchronousTask subclasses to use the default
11 isAlive implementation, which returns True if self.returncode
12 is not None. This fixes cases where the method would erroneously
13 return False, leading to issues like bug 711688, where the
14 CompositeTask isAlive implementation returned False for a
15 BinpkgPrefetcher instance that was still in the process of
16 starting via its async_start method.
17
18 Fixes: d66e9ec0b105 ("AsynchronousTask: add coroutine async_start method")
19 Bug: https://bugs.gentoo.org/711688
20 Signed-off-by: Zac Medico <zmedico <AT> gentoo.org>
21
22 lib/_emerge/AbstractPollTask.py | 3 ---
23 lib/_emerge/CompositeTask.py | 3 ---
24 lib/_emerge/FifoIpcDaemon.py | 3 ---
25 lib/_emerge/SubProcess.py | 6 +-----
26 4 files changed, 1 insertion(+), 14 deletions(-)
27
28 diff --git a/lib/_emerge/AbstractPollTask.py b/lib/_emerge/AbstractPollTask.py
29 index 4157794c6..7e9f2b536 100644
30 --- a/lib/_emerge/AbstractPollTask.py
31 +++ b/lib/_emerge/AbstractPollTask.py
32 @@ -16,9 +16,6 @@ class AbstractPollTask(AsynchronousTask):
33
34 _bufsize = 4096
35
36 - def isAlive(self):
37 - return bool(self._registered)
38 -
39 def _read_array(self, f):
40 """
41 NOTE: array.fromfile() is used here only for testing purposes,
42
43 diff --git a/lib/_emerge/CompositeTask.py b/lib/_emerge/CompositeTask.py
44 index 319f9f995..1d199d19b 100644
45 --- a/lib/_emerge/CompositeTask.py
46 +++ b/lib/_emerge/CompositeTask.py
47 @@ -12,9 +12,6 @@ class CompositeTask(AsynchronousTask):
48
49 _TASK_QUEUED = -1
50
51 - def isAlive(self):
52 - return self._current_task is not None
53 -
54 def _cancel(self):
55 if self._current_task is not None:
56 if self._current_task is self._TASK_QUEUED:
57
58 diff --git a/lib/_emerge/FifoIpcDaemon.py b/lib/_emerge/FifoIpcDaemon.py
59 index 0cbaa13c7..2ec69d1cb 100644
60 --- a/lib/_emerge/FifoIpcDaemon.py
61 +++ b/lib/_emerge/FifoIpcDaemon.py
62 @@ -70,9 +70,6 @@ class FifoIpcDaemon(AbstractPollTask):
63 self._files.pipe_in,
64 self._input_handler)
65
66 - def isAlive(self):
67 - return self._registered
68 -
69 def _cancel(self):
70 if self.returncode is None:
71 self.returncode = 1
72
73 diff --git a/lib/_emerge/SubProcess.py b/lib/_emerge/SubProcess.py
74 index 1ddfe57fd..e834cb7d3 100644
75 --- a/lib/_emerge/SubProcess.py
76 +++ b/lib/_emerge/SubProcess.py
77 @@ -24,7 +24,7 @@ class SubProcess(AbstractPollTask):
78 return self.returncode
79
80 def _cancel(self):
81 - if self.isAlive():
82 + if self.isAlive() and self.pid is not None:
83 try:
84 os.kill(self.pid, signal.SIGTERM)
85 except OSError as e:
86 @@ -37,10 +37,6 @@ class SubProcess(AbstractPollTask):
87 elif e.errno != errno.ESRCH:
88 raise
89
90 - def isAlive(self):
91 - return self.pid is not None and \
92 - self.returncode is None
93 -
94 def _async_wait(self):
95 if self.returncode is None:
96 raise asyncio.InvalidStateError('Result is not ready for %s' % (self,))