1 |
commit: b2ba35d4704172e8ddbfa0c98900f4b6ed20416b |
2 |
Author: Zac Medico <zmedico <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sun Apr 29 20:03:05 2018 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Sun Apr 29 20:03:43 2018 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=b2ba35d4 |
7 |
|
8 |
AbstractPollTask: call _unregister in _async_wait (bug 654276) |
9 |
|
10 |
Subclasses of AbstractPollTask perform idempotent cleanup in |
11 |
the _unregister method, so it's useful for _async_wait to call it |
12 |
automatically. This allows for migration of various cleanup code from |
13 |
_set_returncode to _unregister, for the purposes of bug 654276. |
14 |
|
15 |
Bug: https://bugs.gentoo.org/654276 |
16 |
|
17 |
pym/_emerge/AbstractPollTask.py | 8 +++++--- |
18 |
1 file changed, 5 insertions(+), 3 deletions(-) |
19 |
|
20 |
diff --git a/pym/_emerge/AbstractPollTask.py b/pym/_emerge/AbstractPollTask.py |
21 |
index 0ce3594b4..2c5403751 100644 |
22 |
--- a/pym/_emerge/AbstractPollTask.py |
23 |
+++ b/pym/_emerge/AbstractPollTask.py |
24 |
@@ -114,8 +114,12 @@ class AbstractPollTask(AsynchronousTask): |
25 |
|
26 |
return buf |
27 |
|
28 |
+ def _async_wait(self): |
29 |
+ self._unregister() |
30 |
+ super(AbstractPollTask, self)._async_wait() |
31 |
+ |
32 |
def _unregister(self): |
33 |
- raise NotImplementedError(self) |
34 |
+ self._registered = False |
35 |
|
36 |
def _log_poll_exception(self, event): |
37 |
writemsg_level( |
38 |
@@ -127,12 +131,10 @@ class AbstractPollTask(AsynchronousTask): |
39 |
if self._registered: |
40 |
if event & self._exceptional_events: |
41 |
self._log_poll_exception(event) |
42 |
- self._unregister() |
43 |
self.cancel() |
44 |
self.returncode = self.returncode or os.EX_OK |
45 |
self._async_wait() |
46 |
elif event & self.scheduler.IO_HUP: |
47 |
- self._unregister() |
48 |
self.returncode = self.returncode or os.EX_OK |
49 |
self._async_wait() |