Skip to content

Commit 7a7df60

Browse files
committed
fix: clone user_proof_processing_mutexes to prevent deadlock
1 parent 26b1641 commit 7a7df60

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

crates/batcher/src/lib.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1313,8 +1313,13 @@ impl Batcher {
13131313
let _building_batch_mutex = self.building_batch_mutex.lock().await;
13141314

13151315
info!("Batch building: waiting until all the ongoing messages finish");
1316+
13161317
// acquire all the user locks to make sure all the ongoing message have been processed
1317-
for user_mutex in self.user_proof_processing_mutexes.lock().await.values() {
1318+
let mutexes: Vec<Arc<Mutex<()>>> = {
1319+
let user_proofs_lock = self.user_proof_processing_mutexes.lock().await;
1320+
user_proofs_lock.values().cloned().collect()
1321+
};
1322+
for user_mutex in mutexes {
13181323
let _ = user_mutex.lock().await;
13191324
}
13201325
info!("Batch building: all user locks acquired, proceeding to build batch");

0 commit comments

Comments
 (0)