Skip to content

Commit e1261c0

Browse files
committed
fix: send message to users in a separate tokio task
1 parent f0aaeea commit e1261c0

File tree

1 file changed

+21
-18
lines changed

1 file changed

+21
-18
lines changed

crates/batcher/src/lib.rs

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -669,28 +669,31 @@ impl Batcher {
669669
}
670670
};
671671

672-
let removed_entries = batch_state_guard
672+
let removed_entries: Vec<_> = batch_state_guard
673673
.batch_queue
674-
.extract_if(|entry, _| entry.sender == user_address);
674+
.extract_if(|entry, _| entry.sender == user_address)
675+
.collect();
675676

676677
// Notify user via websocket before removing the proofs
677678
for (entry, _) in removed_entries {
678-
if let Some(ws_sink) = entry.messaging_sink.as_ref() {
679-
send_message(
680-
ws_sink.clone(),
681-
SubmitProofResponseMessage::UserFundsUnlocked,
682-
)
683-
.await;
684-
// Close websocket connection
685-
let mut sink_guard = ws_sink.write().await;
686-
if let Err(e) = sink_guard.close().await {
687-
warn!(
688-
"Error closing websocket for user {:?}: {:?}",
689-
user_address, e
690-
);
691-
} else {
692-
info!("Closed websocket connection for user {:?}", user_address);
693-
}
679+
if let Some(ws_sink) = entry.messaging_sink {
680+
tokio::spawn(async move {
681+
send_message(
682+
ws_sink.clone(),
683+
SubmitProofResponseMessage::UserFundsUnlocked,
684+
)
685+
.await;
686+
// Close websocket connection
687+
let mut sink_guard = ws_sink.write().await;
688+
if let Err(e) = sink_guard.close().await {
689+
warn!(
690+
"Error closing websocket for user {:?}: {:?}",
691+
user_address, e
692+
);
693+
} else {
694+
info!("Closed websocket connection for user {:?}", user_address);
695+
}
696+
});
694697
}
695698
info!(
696699
"Removed proof with nonce {} for user {:?} from batch queue",

0 commit comments

Comments
 (0)