From 5b3bc9e5f57115064966ec1377f59d19ad86e434 Mon Sep 17 00:00:00 2001 From: 4tochka Date: Thu, 9 May 2019 23:14:27 +0400 Subject: [PATCH] connector --- pybtc/connector/block_loader.py | 6 ++++-- pybtc/connector/connector.py | 3 +-- pybtc/connector/utxo.py | 23 ++++++++++++++--------- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/pybtc/connector/block_loader.py b/pybtc/connector/block_loader.py index 2a24e9f..5e8aed2 100644 --- a/pybtc/connector/block_loader.py +++ b/pybtc/connector/block_loader.py @@ -12,6 +12,8 @@ import traceback from pybtc.connector.utils import decode_block_tx import pickle from lru import LRU + + class BlockLoader: def __init__(self, parent, workers=8): self.worker_limit = workers @@ -52,7 +54,7 @@ class BlockLoader: except Exception as err: self.log.error(str(traceback.format_exc())) self.log.error("watchdog error %s " % err) - await asyncio.sleep(60) + await asyncio.sleep(10) async def loading(self): @@ -159,10 +161,10 @@ class BlockLoader: continue if msg_type == b'result': + self.worker_busy[index] = False blocks = pickle.loads(msg) for i in blocks: self.parent.block_preload.set(i, blocks[i]) - self.worker_busy[index] = False # def disconnect(self,ip): diff --git a/pybtc/connector/connector.py b/pybtc/connector/connector.py index f788e85..2a09896 100644 --- a/pybtc/connector/connector.py +++ b/pybtc/connector/connector.py @@ -441,8 +441,6 @@ class Connector: self.log.error(str(traceback.format_exc())) self.log.error("block error %s" % str(err)) finally: - - self.active_block.set_result(True) # self.log.debug("%s block [%s tx/ %s size] processing time %s cache [%s/%s]" % # (block["height"], # len(block["tx"]), @@ -454,6 +452,7 @@ class Connector: self.get_next_block_mutex = True self.loop.create_task(self.get_next_block()) self.blocks_processing_time += time.time() - tq + self.active_block.set_result(True) async def fetch_block_transactions(self, block, tx_bin_list): q = time.time() diff --git a/pybtc/connector/utxo.py b/pybtc/connector/utxo.py index afab71e..69390b4 100644 --- a/pybtc/connector/utxo.py +++ b/pybtc/connector/utxo.py @@ -43,18 +43,23 @@ class UTXO(): del self.cached[outpoint] def destroy_utxo(self, block_height): + block_height -= self.maturity while self.destroyed: - outpoint = self.destroyed.pop() - try: - del self.cached[outpoint] - self.destroyed_utxo += 1 - except: + r = self.destroyed.pop() + if r[1] > block_height: + self.destroyed.appendleft(r) + break + else: try: - del self.loaded[outpoint] + del self.cached[r[0]] self.destroyed_utxo += 1 except: - self.destroyed_utxo += 1 - pass + try: + del self.loaded[r[0]] + self.destroyed_utxo += 1 + except: + self.destroyed_utxo += 1 + pass return @@ -148,7 +153,7 @@ class UTXO(): self._requests += 1 try: i = self.cached[key] - self.destroyed.append(key) + self.destroyed.append((key, block_height)) # try: # self.destroyed[block_height].add(key) # except: