Skip to content

Commit fd35014

Browse files
committed
Avoid asset registry deadlocks when looking up assets
When the metadata was already provided by the caller, don't obtain a lock at all - there's no need to. In cases where acquiring the lock is necessary, release it immediately after reading the asset's metadata.
1 parent 69fee9c commit fd35014

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

src/elements/asset.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -377,10 +377,9 @@ pub fn lookup_asset(
377377
Ok(if let Some(row) = row {
378378
let reissuance_token = parse_asset_id(&row.reissuance_token);
379379

380-
let registry = registry.map(|r| r.read().unwrap());
381380
let meta = meta
382-
.or_else(|| registry.as_ref().and_then(|r| r.get(asset_id)))
383-
.cloned();
381+
.cloned()
382+
.or_else(|| registry.and_then(|r| r.read().unwrap().get(asset_id).cloned()));
384383
let stats = issued_asset_stats(query.chain(), &mempool, asset_id, &reissuance_token);
385384
let status = query.get_tx_status(&deserialize(&row.issuance_txid).unwrap());
386385

0 commit comments

Comments
 (0)