diff options
author | Zac Medico <zmedico@gentoo.org> | 2018-04-26 00:45:32 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2018-04-26 01:02:28 -0700 |
commit | d16206ccd315edbd4bd7a46c0b1aa9e59a46db43 (patch) | |
tree | f4e6cf67da17a8e995f79b66175316e8591399f9 | |
parent | AbstractPollTask._unregister_if_appropriate: use _async_wait() (bug 591760) (diff) | |
download | portage-d16206ccd315edbd4bd7a46c0b1aa9e59a46db43.tar.gz portage-d16206ccd315edbd4bd7a46c0b1aa9e59a46db43.tar.bz2 portage-d16206ccd315edbd4bd7a46c0b1aa9e59a46db43.zip |
AsyncScheduler._poll(): fix event loop recursion (bug 591760)
Call self._cleanup() and set the returncode, in order to avoid
event loop recursion in self.wait().
Bug: https://bugs.gentoo.org/591760
-rw-r--r-- | pym/portage/util/_async/AsyncScheduler.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/pym/portage/util/_async/AsyncScheduler.py b/pym/portage/util/_async/AsyncScheduler.py index b89b57dab..1b870c771 100644 --- a/pym/portage/util/_async/AsyncScheduler.py +++ b/pym/portage/util/_async/AsyncScheduler.py @@ -29,7 +29,12 @@ class AsyncScheduler(AsynchronousTask, PollScheduler): def _poll(self): if not (self._is_work_scheduled() or self._keep_scheduling()): - self.wait() + self._cleanup() + + if self._error_count > 0: + self.returncode = 1 + else: + self.returncode = os.EX_OK return self.returncode def _cancel(self): |