various cleanup tweaks/fixes

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk 2024-10-01 02:47:39 +00:00 committed by strawberry
parent 96fcf7f94d
commit 26dcab272d
18 changed files with 86 additions and 99 deletions

View file

@ -1,7 +1,7 @@
use std::sync::Arc;
use conduit::{err, utils::stream::TryIgnore, Result};
use database::{Database, Deserialized, Map};
use database::{Database, Map};
use futures::Stream;
use ruma::api::appservice::Registration;
@ -40,7 +40,7 @@ impl Data {
self.id_appserviceregistrations
.get(id)
.await
.deserialized()
.and_then(|ref bytes| serde_yaml::from_slice(bytes).map_err(Into::into))
.map_err(|e| err!(Database("Invalid appservice {id:?} registration: {e:?}")))
}

View file

@ -9,7 +9,7 @@ use itertools::Itertools;
use ruma::{
events::{push_rules::PushRulesEvent, room::member::MembershipState, GlobalAccountDataEventType},
push::Ruleset,
UserId,
OwnedUserId, UserId,
};
use crate::{media, Services};
@ -385,11 +385,12 @@ async fn retroactively_fix_bad_data_from_roomuserid_joined(services: &Services)
for room_id in &room_ids {
debug_info!("Fixing room {room_id}");
let users_in_room = services
let users_in_room: Vec<OwnedUserId> = services
.rooms
.state_cache
.room_members(room_id)
.collect::<Vec<_>>()
.map(ToOwned::to_owned)
.collect()
.await;
let joined_members = users_in_room
@ -418,12 +419,12 @@ async fn retroactively_fix_bad_data_from_roomuserid_joined(services: &Services)
.collect::<Vec<_>>()
.await;
for user_id in joined_members {
for user_id in &joined_members {
debug_info!("User is joined, marking as joined");
services.rooms.state_cache.mark_as_joined(user_id, room_id);
}
for user_id in non_joined_members {
for user_id in &non_joined_members {
debug_info!("User is left or banned, marking as left");
services.rooms.state_cache.mark_as_left(user_id, room_id);
}

View file

@ -648,35 +648,19 @@ impl Service {
self.db.userroomid_leftstate.remove(&userroom_id);
self.db.roomuserid_leftcount.remove(&roomuser_id);
if let Some(servers) = invite_via {
let mut prev_servers = self
.servers_invite_via(room_id)
.map(ToOwned::to_owned)
.collect::<Vec<_>>()
.await;
#[allow(clippy::redundant_clone)] // this is a necessary clone?
prev_servers.append(servers.clone().as_mut());
let servers = prev_servers.iter().rev().unique().rev().collect_vec();
let servers = servers
.iter()
.map(|server| server.as_bytes())
.collect_vec()
.join(&[0xFF][..]);
self.db
.roomid_inviteviaservers
.insert(room_id.as_bytes(), &servers);
if let Some(servers) = invite_via.as_deref() {
self.add_servers_invite_via(room_id, servers).await;
}
}
#[tracing::instrument(skip(self), level = "debug")]
#[tracing::instrument(skip(self, servers), level = "debug")]
pub async fn add_servers_invite_via(&self, room_id: &RoomId, servers: &[OwnedServerName]) {
let mut prev_servers = self
let mut prev_servers: Vec<_> = self
.servers_invite_via(room_id)
.map(ToOwned::to_owned)
.collect::<Vec<_>>()
.collect()
.await;
prev_servers.extend(servers.to_owned());
prev_servers.sort_unstable();
prev_servers.dedup();

View file

@ -408,7 +408,6 @@ impl Service {
.get(None, user, GlobalAccountDataEventType::PushRules.to_string().into())
.await
.and_then(|event| serde_json::from_str::<PushRulesEvent>(event.get()).map_err(Into::into))
.map_err(|e| err!(Database(warn!(?user, ?e, "Invalid push rules event in db for user"))))
.map_or_else(|_| Ruleset::server_default(user), |ev: PushRulesEvent| ev.content.global);
let mut highlight = false;

View file

@ -623,7 +623,9 @@ impl Service {
pub async fn mark_device_key_update(&self, user_id: &UserId) {
let count = self.services.globals.next_count().unwrap().to_be_bytes();
let rooms_joined = self.services.state_cache.rooms_joined(user_id);
pin_mut!(rooms_joined);
while let Some(room_id) = rooms_joined.next().await {
// Don't send key updates to unencrypted rooms