use mempool cache in transaction_get_batch

This commit is contained in:
Jack Robison 2021-10-27 20:19:08 -04:00
parent ff21a92330
commit ddbbb6f1dd
No known key found for this signature in database
GPG key ID: DF25C68FE0239BB2
3 changed files with 11 additions and 5 deletions

View file

@ -56,7 +56,7 @@ async def get_recent_claims(env, index_name='claims', db=None):
db.prefix_db.unsafe_commit() db.prefix_db.unsafe_commit()
db.assert_db_state() db.assert_db_state()
logging.info("finished sending %i claims to ES, deleted %i", cnt, len(touched_claims), len(deleted_claims)) logging.info("finished sending %i claims to ES, deleted %i", cnt, len(deleted_claims))
finally: finally:
if need_open: if need_open:
db.close() db.close()

View file

@ -29,6 +29,7 @@ class MemPoolTx:
out_pairs = attr.ib() out_pairs = attr.ib()
fee = attr.ib() fee = attr.ib()
size = attr.ib() size = attr.ib()
raw_tx = attr.ib()
@attr.s(slots=True) @attr.s(slots=True)
@ -230,7 +231,7 @@ class MemPool:
txout_pairs = tuple((to_hashX(txout.pk_script), txout.value) txout_pairs = tuple((to_hashX(txout.pk_script), txout.value)
for txout in tx.outputs) for txout in tx.outputs)
tx_map[hash] = MemPoolTx(txin_pairs, None, txout_pairs, tx_map[hash] = MemPoolTx(txin_pairs, None, txout_pairs,
0, tx_size) 0, tx_size, raw_tx)
# Determine all prevouts not in the mempool, and fetch the # Determine all prevouts not in the mempool, and fetch the
# UTXO information from the database. Failed prevout lookups # UTXO information from the database. Failed prevout lookups

View file

@ -1461,6 +1461,11 @@ class LBRYElectrumX(SessionBase):
for tx_hash in tx_hashes: for tx_hash in tx_hashes:
if tx_hash in batch_result and batch_result[tx_hash][0]: if tx_hash in batch_result and batch_result[tx_hash][0]:
continue continue
tx_hash_bytes = bytes.fromhex(tx_hash)[::-1]
mempool_tx = self.mempool.txs.get(tx_hash_bytes, None)
if mempool_tx:
raw_tx, block_hash = mempool_tx.raw_tx.hex(), None
else:
tx_info = await self.daemon_request('getrawtransaction', tx_hash, True) tx_info = await self.daemon_request('getrawtransaction', tx_hash, True)
raw_tx = tx_info['hex'] raw_tx = tx_info['hex']
block_hash = tx_info.get('blockhash') block_hash = tx_info.get('blockhash')