improvement: less IO for auth chains

This commit is contained in:
Timo Kösters 2021-08-26 18:59:38 +02:00
parent b5f27d9ec2
commit bb9cb90e77
No known key found for this signature in database
GPG key ID: 24DA7517711A2BA4

View file

@ -1980,15 +1980,9 @@ fn get_auth_chain(
let mut buckets = vec![BTreeSet::new(); NUM_BUCKETS];
for id in starting_events {
if let Some(pdu) = db.rooms.get_pdu(&id)? {
for auth_event in &pdu.auth_events {
let short = db
.rooms
.get_or_create_shorteventid(&auth_event, &db.globals)?;
let bucket_id = (short % NUM_BUCKETS as u64) as usize;
buckets[bucket_id].insert((short, auth_event.clone()));
}
}
let short = db.rooms.get_or_create_shorteventid(&id, &db.globals)?;
let bucket_id = (short % NUM_BUCKETS as u64) as usize;
buckets[bucket_id].insert((short, id.clone()));
}
let mut full_auth_chain = HashSet::new();
@ -2000,10 +1994,6 @@ fn get_auth_chain(
continue;
}
// The code below will only get the auth chains, not the events in the chunk. So let's add
// them first
full_auth_chain.extend(chunk.iter().map(|(id, _)| id));
let chunk_key = chunk
.iter()
.map(|(short, _)| short)