Remove reliance on a blockchain read lock from block/commit

This commit is contained in:
Luke Parker
2023-04-23 23:37:40 -04:00
parent c476f9b640
commit 215155f84b
6 changed files with 31 additions and 32 deletions

View File

@@ -175,8 +175,8 @@ pub async fn heartbeat_tributaries<D: Db, P: P2p>(
for ActiveTributary { spec: _, tributary } in tributaries.read().await.values() {
let tributary = tributary.read().await;
let tip = tributary.tip().await;
let block_time = SystemTime::UNIX_EPOCH +
Duration::from_secs(tributary.time_of_block(&tip).await.unwrap_or(0));
let block_time =
SystemTime::UNIX_EPOCH + Duration::from_secs(tributary.time_of_block(&tip).unwrap_or(0));
// Only trigger syncing if the block is more than a minute behind
if SystemTime::now() > (block_time + Duration::from_secs(60)) {

View File

@@ -124,14 +124,14 @@ pub async fn wait_for_tx_inclusion(
continue;
}
let mut queue = vec![tributary.block(&tip).await.unwrap()];
let mut queue = vec![tributary.block(&tip).unwrap()];
let mut block = None;
while {
let parent = queue.last().unwrap().parent();
if parent == tributary.genesis() {
false
} else {
block = Some(tributary.block(&parent).await.unwrap());
block = Some(tributary.block(&parent).unwrap());
block.as_ref().unwrap().hash() != last_checked
}
} {

View File

@@ -46,7 +46,7 @@ async fn tx_test() {
// All tributaries should have acknowledged this transaction in a block
for (_, tributary) in tributaries {
let block = tributary.block(&included_in).await.unwrap();
let block = tributary.block(&included_in).unwrap();
assert_eq!(block.transactions, vec![tx.clone()]);
}
}

View File

@@ -307,7 +307,7 @@ pub async fn handle_new_blocks<D: Db, Pro: Processor, P: P2p>(
let mut blocks = VecDeque::new();
// This is a new block, as per the prior if check
blocks.push_back(tributary.block(&latest).await.unwrap());
blocks.push_back(tributary.block(&latest).unwrap());
let mut block = None;
while {
@@ -317,7 +317,7 @@ pub async fn handle_new_blocks<D: Db, Pro: Processor, P: P2p>(
false
} else {
// Get this block
block = Some(tributary.block(&parent).await.unwrap());
block = Some(tributary.block(&parent).unwrap());
// If it's the last block we've scanned, it's the end. Else, push it
block.as_ref().unwrap().hash() != last_block
}