Browse Source

Use less task groups now aiorpcx (0.10.4) is fixed

patch-2
Neil Booth 6 years ago
parent
commit
9f4fc12db1
  1. 4
      electrumx/server/controller.py
  2. 12
      electrumx/server/session.py
  3. 2
      setup.py

4
electrumx/server/controller.py

@ -82,8 +82,8 @@ class Controller(ServerBase):
'''Start the RPC server and wait for the mempool to synchronize. Then '''Start the RPC server and wait for the mempool to synchronize. Then
start serving external clients. start serving external clients.
''' '''
if not (0, 10, 3) <= aiorpcx_version < (0, 11): if not (0, 10, 4) <= aiorpcx_version < (0, 11):
raise RuntimeError('aiorpcX version 0.10.x, x >= 3, required') raise RuntimeError('aiorpcX version 0.10.x, x >= 4, required')
env = self.env env = self.env
min_str, max_str = env.coin.SESSIONCLS.protocol_min_max_strings() min_str, max_str = env.coin.SESSIONCLS.protocol_min_max_strings()

12
electrumx/server/session.py

@ -262,9 +262,8 @@ class SessionManager(object):
for session in stale_sessions) for session in stale_sessions)
self.logger.info(f'closing stale connections {text}') self.logger.info(f'closing stale connections {text}')
# Give the sockets some time to close gracefully # Give the sockets some time to close gracefully
async with TaskGroup() as group:
for session in stale_sessions: for session in stale_sessions:
await group.spawn(session.close()) await session.spawn(session.close())
# Consolidate small groups # Consolidate small groups
bw_limit = self.env.bandwidth_limit bw_limit = self.env.bandwidth_limit
@ -510,11 +509,12 @@ class SessionManager(object):
await group.spawn(self._log_sessions()) await group.spawn(self._log_sessions())
await group.spawn(self._manage_servers()) await group.spawn(self._manage_servers())
finally: finally:
# Close servers and sessions # Close servers then sessions
await self._close_servers(list(self.servers.keys())) await self._close_servers(list(self.servers.keys()))
async with TaskGroup() as group: for session in list(self.sessions):
for session in self.sessions: await session.spawn(session.close(force_after=1))
await group.spawn(session.close(force_after=1)) for session in list(self.sessions):
await session.closed_event.wait()
def session_count(self): def session_count(self):
'''The number of connections that we've sent something to.''' '''The number of connections that we've sent something to.'''

2
setup.py

@ -14,7 +14,7 @@ setuptools.setup(
# "xevan_hash" package is required to sync Xuez network. # "xevan_hash" package is required to sync Xuez network.
# "groestlcoin_hash" package is required to sync Groestlcoin network. # "groestlcoin_hash" package is required to sync Groestlcoin network.
# "pycryptodomex" package is required to sync SmartCash 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'], 'plyvel', 'pylru', 'aiohttp >= 2'],
packages=setuptools.find_packages(include=('electrumx*',)), packages=setuptools.find_packages(include=('electrumx*',)),
description='ElectrumX Server', description='ElectrumX Server',

Loading…
Cancel
Save