diff --git a/docs/changelog.rst b/docs/changelog.rst index ddf20b9..b0c850d 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -8,8 +8,15 @@ should not occur with Python 3.7. -Version 1.8.1 (in development) -============================== +Version 1.8.2 (09 Aug 2018) +=========================== + +* require aiorpcX 0.7.1 which along with an ElectrumX change restores clean + shutdown and flush functionality, particularly during initial sync +* fix `#564`_ + +Version 1.8.1 (08 Aug 2018) +=========================== * require aiorpcX 0.7.0 which fixes a bug causing silent shutdown of ElectrumX * fix `#557`_, `#559`_ @@ -206,3 +213,4 @@ bitcoincash:qzxpdlt8ehu9ehftw6rqsy2jgfq4nsltxvhrdmdfpn .. _#538: https://github.com/kyuupichan/electrumx/issues/538 .. _#557: https://github.com/kyuupichan/electrumx/issues/557 .. _#559: https://github.com/kyuupichan/electrumx/issues/559 +.. _#564: https://github.com/kyuupichan/electrumx/issues/564 diff --git a/docs/conf.py b/docs/conf.py index 89e86bd..33afff8 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -15,7 +15,7 @@ import os import sys sys.path.insert(0, os.path.abspath('..')) -VERSION="ElectrumX 1.8.1" +VERSION="ElectrumX 1.8.2" # -- Project information ----------------------------------------------------- diff --git a/electrumx/__init__.py b/electrumx/__init__.py index 50d4b31..d42dc60 100644 --- a/electrumx/__init__.py +++ b/electrumx/__init__.py @@ -1,4 +1,4 @@ -version = 'ElectrumX 1.8.2-dev' +version = 'ElectrumX 1.8.3-dev' version_short = version.split()[-1] from electrumx.server.controller import Controller diff --git a/electrumx/server/block_processor.py b/electrumx/server/block_processor.py index b7d0f6f..97f93a0 100644 --- a/electrumx/server/block_processor.py +++ b/electrumx/server/block_processor.py @@ -184,8 +184,10 @@ class BlockProcessor(electrumx.server.db.DB): # completes the data will be flushed and then we shut down. # Take the state lock to be certain in-memory state is # consistent and not being updated elsewhere. - async with self.state_lock: - return await asyncio.shield(run_in_thread(func, *args)) + async def run_in_thread_locked(): + async with self.state_lock: + return await run_in_thread(func, *args) + return await asyncio.shield(run_in_thread_locked()) async def _maybe_flush(self): # If caught up, flush everything as client queries are diff --git a/electrumx/server/controller.py b/electrumx/server/controller.py index a43ee95..e3115c6 100644 --- a/electrumx/server/controller.py +++ b/electrumx/server/controller.py @@ -80,8 +80,8 @@ class Controller(ServerBase): '''Start the RPC server and wait for the mempool to synchronize. Then start serving external clients. ''' - if not (0, 7) <= aiorpcx_version < (0, 8): - raise RuntimeError('aiorpcX version 0.7.x required') + if not (0, 7, 1) <= aiorpcx_version < (0, 8): + raise RuntimeError('aiorpcX version 0.7.x required with x >= 1') env = self.env min_str, max_str = env.coin.SESSIONCLS.protocol_min_max_strings() diff --git a/setup.py b/setup.py index e48f82f..bc41701 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,5 @@ import setuptools -version = '1.8.1' +version = '1.8.2' setuptools.setup( name='electrumX', @@ -12,7 +12,7 @@ setuptools.setup( # "blake256" package is required to sync Decred network. # "xevan_hash" package is required to sync Xuez network. # "groestlcoin_hash" package is required to sync Groestlcoin network. - install_requires=['aiorpcX>=0.7,<0.8', 'attrs', + install_requires=['aiorpcX>=0.7.1,<0.8', 'attrs', 'plyvel', 'pylru', 'aiohttp >= 2'], packages=setuptools.find_packages(include=('electrumx*',)), description='ElectrumX Server',