Merge branch 'env_debug' into develop
This commit is contained in:
commit
f391e5e112
@ -167,6 +167,7 @@ class MemPool(LoggedClass):
|
|||||||
self.txs = {}
|
self.txs = {}
|
||||||
self.hash168s = defaultdict(set) # None can be a key
|
self.hash168s = defaultdict(set) # None can be a key
|
||||||
self.bp = bp
|
self.bp = bp
|
||||||
|
self.initial = True
|
||||||
|
|
||||||
async def update(self, hex_hashes):
|
async def update(self, hex_hashes):
|
||||||
'''Update state given the current mempool to the passed set of hashes.
|
'''Update state given the current mempool to the passed set of hashes.
|
||||||
@ -177,7 +178,8 @@ class MemPool(LoggedClass):
|
|||||||
hex_hashes = set(hex_hashes)
|
hex_hashes = set(hex_hashes)
|
||||||
touched = set()
|
touched = set()
|
||||||
|
|
||||||
if not self.txs:
|
if self.initial:
|
||||||
|
self.initial = False
|
||||||
self.logger.info('initial fetch of {:,d} daemon mempool txs'
|
self.logger.info('initial fetch of {:,d} daemon mempool txs'
|
||||||
.format(len(hex_hashes)))
|
.format(len(hex_hashes)))
|
||||||
|
|
||||||
@ -322,6 +324,8 @@ class BlockProcessor(LoggedClass):
|
|||||||
self.height = self.db_height
|
self.height = self.db_height
|
||||||
self.tip = self.db_tip
|
self.tip = self.db_tip
|
||||||
|
|
||||||
|
self.daemon.debug_set_height(self.height)
|
||||||
|
|
||||||
# Caches to be flushed later. Headers and tx_hashes have one
|
# Caches to be flushed later. Headers and tx_hashes have one
|
||||||
# entry per block
|
# entry per block
|
||||||
self.history = defaultdict(partial(array.array, 'I'))
|
self.history = defaultdict(partial(array.array, 'I'))
|
||||||
|
|||||||
@ -34,7 +34,7 @@ class Controller(LoggedClass):
|
|||||||
self.loop = loop
|
self.loop = loop
|
||||||
self.env = env
|
self.env = env
|
||||||
self.coin = env.coin
|
self.coin = env.coin
|
||||||
self.daemon = Daemon(env.daemon_url)
|
self.daemon = Daemon(env.daemon_url, env.debug)
|
||||||
self.block_processor = BlockProcessor(env, self.daemon,
|
self.block_processor = BlockProcessor(env, self.daemon,
|
||||||
on_update=self.on_update)
|
on_update=self.on_update)
|
||||||
JSONRPC.init(self.block_processor, self.daemon, self.coin,
|
JSONRPC.init(self.block_processor, self.daemon, self.coin,
|
||||||
|
|||||||
@ -26,11 +26,18 @@ class Daemon(util.LoggedClass):
|
|||||||
|
|
||||||
WARMING_UP = -28
|
WARMING_UP = -28
|
||||||
|
|
||||||
def __init__(self, url):
|
def __init__(self, url, debug):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.url = url
|
self.url = url
|
||||||
self._height = None
|
self._height = None
|
||||||
self.logger.info('connecting to daemon at URL {}'.format(url))
|
self.logger.info('connecting to daemon at URL {}'.format(url))
|
||||||
|
self.debug_caught_up = 'caught_up' in debug
|
||||||
|
|
||||||
|
def debug_set_height(self, height):
|
||||||
|
if self.debug_caught_up:
|
||||||
|
self.logger.info('pretending to have caught up to height {}'
|
||||||
|
.format(height))
|
||||||
|
self._height = height
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def is_warming_up(cls, err):
|
def is_warming_up(cls, err):
|
||||||
@ -103,6 +110,8 @@ class Daemon(util.LoggedClass):
|
|||||||
|
|
||||||
async def mempool_hashes(self):
|
async def mempool_hashes(self):
|
||||||
'''Return the hashes of the txs in the daemon's mempool.'''
|
'''Return the hashes of the txs in the daemon's mempool.'''
|
||||||
|
if self.debug_caught_up:
|
||||||
|
return []
|
||||||
return await self.send_single('getrawmempool')
|
return await self.send_single('getrawmempool')
|
||||||
|
|
||||||
async def estimatefee(self, params):
|
async def estimatefee(self, params):
|
||||||
@ -138,7 +147,8 @@ class Daemon(util.LoggedClass):
|
|||||||
|
|
||||||
async def height(self):
|
async def height(self):
|
||||||
'''Query the daemon for its current height.'''
|
'''Query the daemon for its current height.'''
|
||||||
self._height = await self.send_single('getblockcount')
|
if not self.debug_caught_up:
|
||||||
|
self._height = await self.send_single('getblockcount')
|
||||||
return self._height
|
return self._height
|
||||||
|
|
||||||
def cached_height(self):
|
def cached_height(self):
|
||||||
|
|||||||
@ -43,6 +43,8 @@ class Env(LoggedClass):
|
|||||||
# The electrum client takes the empty string as unspecified
|
# The electrum client takes the empty string as unspecified
|
||||||
self.donation_address = self.default('DONATION_ADDRESS', '')
|
self.donation_address = self.default('DONATION_ADDRESS', '')
|
||||||
self.db_engine = self.default('DB_ENGINE', 'leveldb')
|
self.db_engine = self.default('DB_ENGINE', 'leveldb')
|
||||||
|
self.debug = self.default('DEBUG', '')
|
||||||
|
self.debug = [item.lower() for item in self.debug.split()]
|
||||||
|
|
||||||
def default(self, envvar, default):
|
def default(self, envvar, default):
|
||||||
return environ.get(envvar, default)
|
return environ.get(envvar, default)
|
||||||
|
|||||||
@ -77,7 +77,7 @@ class JSONRPC(asyncio.Protocol, LoggedClass):
|
|||||||
try:
|
try:
|
||||||
message = json.loads(message.decode())
|
message = json.loads(message.decode())
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.logger.info('error decoding JSON message'.format(e))
|
self.logger.info('error decoding JSON message: {}'.format(e))
|
||||||
else:
|
else:
|
||||||
self.ADD_JOB(self.request_handler(message))
|
self.ADD_JOB(self.request_handler(message))
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user