fix: scope borrow in heat seeking to try to prevent deadlock
This commit is contained in:
@@ -30,14 +30,18 @@ pub async fn heat_seek(state: State) {
|
|||||||
let mut vcs_in_guild_senders = BTreeMap::default();
|
let mut vcs_in_guild_senders = BTreeMap::default();
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
|
{
|
||||||
for (&guild_id, vcs_in_guild) in &*vcs_watcher.borrow() {
|
for (&guild_id, vcs_in_guild) in &*vcs_watcher.borrow() {
|
||||||
let vcs_in_guild_sender = vcs_in_guild_senders.entry(guild_id).or_insert_with(|| {
|
let vcs_in_guild_sender =
|
||||||
|
vcs_in_guild_senders.entry(guild_id).or_insert_with(|| {
|
||||||
let (vcs_in_guild_sender, vcs_in_guild_watcher) =
|
let (vcs_in_guild_sender, vcs_in_guild_watcher) =
|
||||||
watch::channel(Default::default());
|
watch::channel(Default::default());
|
||||||
let (channel_heat_sender, channel_heat_watcher) =
|
let (channel_heat_sender, channel_heat_watcher) =
|
||||||
watch::channel(Default::default());
|
watch::channel(Default::default());
|
||||||
let (heat_map_sender, heat_map_watcher) = watch::channel(Default::default());
|
let (heat_map_sender, heat_map_watcher) =
|
||||||
let (hottest_vc_sender, hottest_vc_watcher) = watch::channel(Default::default());
|
watch::channel(Default::default());
|
||||||
|
let (hottest_vc_sender, hottest_vc_watcher) =
|
||||||
|
watch::channel(Default::default());
|
||||||
|
|
||||||
tokio::spawn(
|
tokio::spawn(
|
||||||
evaluate_heat()
|
evaluate_heat()
|
||||||
@@ -73,6 +77,7 @@ pub async fn heat_seek(state: State) {
|
|||||||
});
|
});
|
||||||
vcs_in_guild_sender.send_replace(Arc::new(vcs_in_guild.clone()));
|
vcs_in_guild_sender.send_replace(Arc::new(vcs_in_guild.clone()));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if matches!(
|
if matches!(
|
||||||
vcs_watcher
|
vcs_watcher
|
||||||
|
|||||||
Reference in New Issue
Block a user