cache compressed state in a sorted structure for logarithmic queries with partial keys

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk 2025-01-31 15:50:09 +00:00
parent ea49b60273
commit 4add39d0fe
7 changed files with 118 additions and 73 deletions

View file

@ -1,10 +1,4 @@
use std::{
borrow::Borrow,
collections::{BTreeMap, HashSet},
iter::once,
sync::Arc,
time::Instant,
};
use std::{borrow::Borrow, collections::BTreeMap, iter::once, sync::Arc, time::Instant};
use conduwuit::{
debug, debug_info, err, implement, trace,
@ -19,7 +13,10 @@ use ruma::{
};
use super::{get_room_version_id, to_room_version};
use crate::rooms::{state_compressor::HashSetCompressStateEvent, timeline::RawPduId};
use crate::rooms::{
state_compressor::{CompressedState, HashSetCompressStateEvent},
timeline::RawPduId,
};
#[implement(super::Service)]
pub(super) async fn upgrade_outlier_to_timeline_pdu(
@ -173,7 +170,7 @@ pub(super) async fn upgrade_outlier_to_timeline_pdu(
incoming_pdu.prev_events.len()
);
let state_ids_compressed: Arc<HashSet<_>> = self
let state_ids_compressed: Arc<CompressedState> = self
.services
.state_compressor
.compress_state_events(