Skip to content

Commit a7d08a3

Browse files
author
Ludo Galabru
committed
fix: address non-inscribed block case
1 parent 3177e22 commit a7d08a3

File tree

2 files changed

+33
-33
lines changed

2 files changed

+33
-33
lines changed

components/chainhook-event-observer/src/hord/db/mod.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -566,7 +566,7 @@ pub async fn fetch_and_cache_blocks_in_hord_db(
566566
let (block_hash_tx, block_hash_rx) = crossbeam_channel::bounded(128);
567567
let retrieve_block_data_pool = ThreadPool::new(network_thread);
568568
let (block_data_tx, block_data_rx) = crossbeam_channel::bounded(64);
569-
let compress_block_data_pool = ThreadPool::new(8);
569+
let compress_block_data_pool = ThreadPool::new(16);
570570
let (block_compressed_tx, block_compressed_rx) = crossbeam_channel::bounded(32);
571571
let first_inscription_block_height = 767430;
572572

@@ -635,8 +635,6 @@ pub async fn fetch_and_cache_blocks_in_hord_db(
635635
let mut inbox = HashMap::new();
636636

637637
while let Ok(Some((block_height, compacted_block, raw_block))) = block_compressed_rx.recv() {
638-
ctx.try_log(|logger| slog::info!(logger, "Storing compacted block #{block_height}"));
639-
640638
insert_entry_in_blocks(block_height, &compacted_block, &rw_hord_db_conn, &ctx);
641639
blocks_stored += 1;
642640

@@ -660,6 +658,7 @@ pub async fn fetch_and_cache_blocks_in_hord_db(
660658
// Is the action of processing a block allows us
661659
// to process more blocks present in the inbox?
662660
while let Some(next_block) = inbox.remove(&cursor) {
661+
ctx.try_log(|logger| slog::info!(logger, "Processing block #{cursor}"));
663662
let mut new_block = match standardize_bitcoin_block(next_block, &bitcoin_network, &ctx)
664663
{
665664
Ok(block) => block,

components/chainhook-event-observer/src/hord/mod.rs

+31-30
Original file line numberDiff line numberDiff line change
@@ -104,43 +104,44 @@ pub fn update_hord_db_and_augment_bitcoin_block(
104104
let mut transactions_ids = vec![];
105105
for new_tx in new_block.transactions.iter_mut().skip(1) {
106106
// Have a new inscription been revealed, if so, are looking at a re-inscription
107-
for ordinal_event in
108-
new_tx.metadata.ordinal_operations.iter_mut()
109-
{
107+
for ordinal_event in new_tx.metadata.ordinal_operations.iter_mut() {
110108
if let OrdinalOperation::InscriptionRevealed(_) = ordinal_event {
111109
transactions_ids.push(new_tx.transaction_identifier.clone());
112110
}
113111
}
114112
}
115-
let expected_traversals = transactions_ids.len();
116-
let (traversal_tx, traversal_rx) = channel::<(TransactionIdentifier, TraversalResult)>();
117-
let traversal_data_pool = ThreadPool::new(10);
118-
119-
for transaction_id in transactions_ids.into_iter() {
120-
let moved_traversal_tx = traversal_tx.clone();
121-
let moved_ctx = ctx.clone();
122-
let block_identifier = new_block.block_identifier.clone();
123-
let hord_db_path = hord_db_path.clone();
124-
traversal_data_pool.execute(move || {
125-
let hord_db_conn = open_readonly_hord_db_conn(&hord_db_path, &moved_ctx).unwrap();
126-
let traversal = retrieve_satoshi_point_using_local_storage(
127-
&hord_db_conn,
128-
&block_identifier,
129-
&transaction_id,
130-
&moved_ctx,
131-
)
132-
.unwrap();
133-
let _ = moved_traversal_tx.send((transaction_id, traversal));
134-
});
135-
}
136113

137114
let mut traversals = HashMap::new();
138-
let mut traversals_received = 0;
139-
while let Ok((transaction_identifier, traversal_result)) = traversal_rx.recv() {
140-
traversals_received += 1;
141-
traversals.insert(transaction_identifier, traversal_result);
142-
if traversals_received == expected_traversals {
143-
break;
115+
if !transactions_ids.is_empty() {
116+
let expected_traversals = transactions_ids.len();
117+
let (traversal_tx, traversal_rx) = channel::<(TransactionIdentifier, TraversalResult)>();
118+
let traversal_data_pool = ThreadPool::new(10);
119+
120+
for transaction_id in transactions_ids.into_iter() {
121+
let moved_traversal_tx = traversal_tx.clone();
122+
let moved_ctx = ctx.clone();
123+
let block_identifier = new_block.block_identifier.clone();
124+
let hord_db_path = hord_db_path.clone();
125+
traversal_data_pool.execute(move || {
126+
let hord_db_conn = open_readonly_hord_db_conn(&hord_db_path, &moved_ctx).unwrap();
127+
let traversal = retrieve_satoshi_point_using_local_storage(
128+
&hord_db_conn,
129+
&block_identifier,
130+
&transaction_id,
131+
&moved_ctx,
132+
)
133+
.unwrap();
134+
let _ = moved_traversal_tx.send((transaction_id, traversal));
135+
});
136+
}
137+
138+
let mut traversals_received = 0;
139+
while let Ok((transaction_identifier, traversal_result)) = traversal_rx.recv() {
140+
traversals_received += 1;
141+
traversals.insert(transaction_identifier, traversal_result);
142+
if traversals_received == expected_traversals {
143+
break;
144+
}
144145
}
145146
}
146147

0 commit comments

Comments
 (0)