Fix a couple of issues with 0.9.0

Fixes #69
This commit is contained in:
Neil Booth 2016-12-12 07:24:00 +09:00
parent d36925d459
commit f600d3bd87
3 changed files with 9 additions and 14 deletions

View File

@ -133,12 +133,3 @@ def increment_byte_string(bs):
# This can only happen if all characters are 0xff
bs = bytes([1]) + bs
return bytes(bs)
async def asyncio_clean_shutdown(loop=None):
while True:
pending_tasks = [task for task in asyncio.Task.all_tasks(loop)
if not task.done()]
if len(pending_tasks) <= 1:
break
await asyncio.sleep(0)
await asyncio.sleep(1)

View File

@ -133,9 +133,10 @@ class MemPool(util.LoggedClass):
loop = asyncio.get_event_loop()
pending = []
txs = self.txs
first = True
async def process(unprocessed):
nonlocal pending
nonlocal first, pending
raw_txs = {}
while unprocessed and len(raw_txs) < limit:
@ -163,9 +164,12 @@ class MemPool(util.LoggedClass):
hash168s[hash168].add(hex_hash)
to_do = len(unfetched) + len(unprocessed)
if to_do:
percent = (len(txs) - to_do) * 100 // len(txs)
if to_do and txs:
percent = max(0, len(txs) - to_do) * 100 // len(txs)
self.logger.info('catchup {:d}% complete'.format(percent))
elif first:
first = False
self.logger.info('caught up')
return process
@ -257,7 +261,7 @@ class MemPool(util.LoggedClass):
return []
hex_hashes = self.hash168s[hash168]
raw_txs = self.daemon.getrawtransactions(hex_hashes)
raw_txs = await self.daemon.getrawtransactions(hex_hashes)
result = []
for hex_hash, raw_tx in zip(hex_hashes, raw_txs):
item = self.txs.get(hex_hash)

View File

@ -183,7 +183,7 @@ class ServerManager(util.LoggedClass):
except asyncio.CancelledError:
break
await self.shutdown()
await util.asyncio_clean_shutdown()
await asyncio.sleep(1)
async def start_server(self, kind, *args, **kw_args):
protocol_class = LocalRPC if kind == 'RPC' else ElectrumX