From 06ee804a309c3ef1f21a8bb5684482841701473a Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Sat, 6 Apr 2019 09:19:48 +0800 Subject: [PATCH] aiorpcx: require 0.11.0 --- electrumx/server/controller.py | 4 ++-- electrumx/server/session.py | 17 +++++++++-------- setup.py | 2 +- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/electrumx/server/controller.py b/electrumx/server/controller.py index acb8a9a..868a1f3 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, 4) <= aiorpcx_version < (0, 11): - raise RuntimeError('aiorpcX version 0.10.x, x >= 4, required') + if not (0, 11, 0) <= aiorpcx_version < (0, 12): + raise RuntimeError('aiorpcX version 0.11.x is 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 8b4bf8b..37023d3 100644 --- a/electrumx/server/session.py +++ b/electrumx/server/session.py @@ -262,8 +262,9 @@ class SessionManager(object): for session in stale_sessions) self.logger.info(f'closing stale connections {text}') # Give the sockets some time to close gracefully - for session in stale_sessions: - await session.spawn(session.close()) + async with TaskGroup() as group: + for session in stale_sessions: + await group.spawn(session.close()) # Consolidate small groups bw_limit = self.env.bandwidth_limit @@ -512,10 +513,9 @@ class SessionManager(object): finally: # Close servers then sessions await self._close_servers(list(self.servers.keys())) - 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() + async with TaskGroup() as group: + for session in list(self.sessions): + await group.spawn(session.close(force_after=1)) def session_count(self): '''The number of connections that we've sent something to.''' @@ -573,8 +573,9 @@ class SessionManager(object): for hashX in set(hc).intersection(touched): del hc[hashX] - for session in self.sessions: - await session.spawn(session.notify, touched, height_changed) + async with TaskGroup() as group: + for session in self.sessions: + await group.spawn(session.notify, touched, height_changed) def add_session(self, session): self.sessions.add(session) diff --git a/setup.py b/setup.py index 1a7ae25..cf37db6 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.4,<0.11', 'attrs', + install_requires=['aiorpcX>=0.11.0,<0.12', 'attrs', 'plyvel', 'pylru', 'aiohttp >= 2'], packages=setuptools.find_packages(include=('electrumx*',)), description='ElectrumX Server',