mirror of https://github.com/mastodon/flodgatt
Remove empty entries from MsgQueues hashmap
Before this change, entries in the MsgQueue hashmap would remain once added, even if their value fell to 0. This could lead to a very slight memory leak/increase, because the hashmap would grow each time a new user connected and would not decrease again. This is now fixed.
This commit is contained in:
parent
a385434882
commit
357b812f58
|
@ -90,8 +90,9 @@ impl Receiver {
|
||||||
});
|
});
|
||||||
use RedisCmd::*;
|
use RedisCmd::*;
|
||||||
if *number_of_subscriptions == 0 {
|
if *number_of_subscriptions == 0 {
|
||||||
self.redis_connection.send_cmd(Unsubscribe, &tl)?
|
self.redis_connection.send_cmd(Unsubscribe, &tl)?;
|
||||||
}
|
self.clients_per_timeline.remove_entry(&tl);
|
||||||
|
};
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
@ -163,31 +164,4 @@ impl Receiver {
|
||||||
.fold(0, |acc, el| acc.max(el.messages.len()))
|
.fold(0, |acc, el| acc.max(el.messages.len()))
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// /// Drop any PubSub subscriptions that don't have active clients and check
|
|
||||||
// /// that there's a subscription to the current one. If there isn't, then
|
|
||||||
// /// subscribe to it.
|
|
||||||
// fn subscribe_or_unsubscribe_as_needed(&mut self, tl: Timeline) -> Result<()> {
|
|
||||||
// let timelines_to_modify = self.msg_queues.calculate_timelines_to_add_or_drop(tl);
|
|
||||||
|
|
||||||
// // Record the lower number of clients subscribed to that channel
|
|
||||||
// for change in timelines_to_modify {
|
|
||||||
// let timeline = change.timeline;
|
|
||||||
|
|
||||||
// let count_of_subscribed_clients = self
|
|
||||||
// .clients_per_timeline
|
|
||||||
// .entry(timeline)
|
|
||||||
// .and_modify(|n| *n += change.in_subscriber_number)
|
|
||||||
// .or_insert_with(|| 1);
|
|
||||||
|
|
||||||
// // If no clients, unsubscribe from the channel
|
|
||||||
// use RedisCmd::*;
|
|
||||||
// if *count_of_subscribed_clients <= 0 {
|
|
||||||
// self.redis_connection.send_cmd(Unsubscribe, &timeline)?;
|
|
||||||
// } else if *count_of_subscribed_clients == 1 && change.in_subscriber_number == 1 {
|
|
||||||
// self.redis_connection.send_cmd(Subscribe, &timeline)?
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// Ok(())
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue