From 9f4fc12db1587d0ad143002590f05c14b77dcd8d Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Fri, 8 Feb 2019 11:14:41 +0800 Subject: [PATCH] Use less task groups now aiorpcx (0.10.4) is fixed --- electrumx/server/controller.py | 4 ++-- electrumx/server/session.py | 14 +++++++------- setup.py | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/electrumx/server/controller.py b/electrumx/server/controller.py index 7624ed7..acb8a9a 100644 --- a/electrumx/server/controller.py +++ b/electrumx/server/controller.py @@ -82,8 +82,8 @@ class Controller(ServerBase): '''Start the RPC server and wait for the mempool to synchronize. Then start serving external clients. ''' - if not (0, 10, 3) <= aiorpcx_version < (0, 11): - raise RuntimeError('aiorpcX version 0.10.x, x >= 3, required') + if not (0, 10, 4) <= aiorpcx_version < (0, 11): + raise RuntimeError('aiorpcX version 0.10.x, x >= 4, required') env = self.env min_str, max_str = env.coin.SESSIONCLS.protocol_min_max_strings() diff --git a/electrumx/server/session.py b/electrumx/server/session.py index 3354c66..71e54e8 100644 --- a/electrumx/server/session.py +++ b/electrumx/server/session.py @@ -262,9 +262,8 @@ class SessionManager(object): for session in stale_sessions) self.logger.info(f'closing stale connections {text}') # Give the sockets some time to close gracefully - async with TaskGroup() as group: - for session in stale_sessions: - await group.spawn(session.close()) + for session in stale_sessions: + await session.spawn(session.close()) # Consolidate small groups bw_limit = self.env.bandwidth_limit @@ -510,11 +509,12 @@ class SessionManager(object): await group.spawn(self._log_sessions()) await group.spawn(self._manage_servers()) finally: - # Close servers and sessions + # Close servers then sessions await self._close_servers(list(self.servers.keys())) - async with TaskGroup() as group: - for session in self.sessions: - await group.spawn(session.close(force_after=1)) + for session in list(self.sessions): + await session.spawn(session.close(force_after=1)) + for session in list(self.sessions): + await session.closed_event.wait() def session_count(self): '''The number of connections that we've sent something to.''' diff --git a/setup.py b/setup.py index f50aaf1..b61d2c9 100644 --- a/setup.py +++ b/setup.py @@ -14,7 +14,7 @@ setuptools.setup( # "xevan_hash" package is required to sync Xuez network. # "groestlcoin_hash" package is required to sync Groestlcoin network. # "pycryptodomex" package is required to sync SmartCash network. - install_requires=['aiorpcX>=0.10.3,<0.11', 'attrs', + install_requires=['aiorpcX>=0.10.4,<0.11', 'attrs', 'plyvel', 'pylru', 'aiohttp >= 2'], packages=setuptools.find_packages(include=('electrumx*',)), description='ElectrumX Server',