fix: improve locks

This commit is contained in:
Timo Kösters 2021-08-03 11:10:58 +02:00
parent 6b06fc9707
commit 0eeba86b32
No known key found for this signature in database
GPG key ID: 24DA7517711A2BA4
12 changed files with 153 additions and 134 deletions

View file

@ -243,15 +243,15 @@ pub async fn register_route(
let room_id = RoomId::new(db.globals.server_name());
let mutex = Arc::clone(
let mutex_state = Arc::clone(
db.globals
.roomid_mutex
.roomid_mutex_state
.write()
.unwrap()
.entry(room_id.clone())
.or_default(),
);
let mutex_lock = mutex.lock().await;
let state_lock = mutex_state.lock().await;
let mut content = ruma::events::room::create::CreateEventContent::new(conduit_user.clone());
content.federate = true;
@ -270,7 +270,7 @@ pub async fn register_route(
&conduit_user,
&room_id,
&db,
&mutex_lock,
&state_lock,
)?;
// 2. Make conduit bot join
@ -293,7 +293,7 @@ pub async fn register_route(
&conduit_user,
&room_id,
&db,
&mutex_lock,
&state_lock,
)?;
// 3. Power levels
@ -318,7 +318,7 @@ pub async fn register_route(
&conduit_user,
&room_id,
&db,
&mutex_lock,
&state_lock,
)?;
// 4.1 Join Rules
@ -336,7 +336,7 @@ pub async fn register_route(
&conduit_user,
&room_id,
&db,
&mutex_lock,
&state_lock,
)?;
// 4.2 History Visibility
@ -356,7 +356,7 @@ pub async fn register_route(
&conduit_user,
&room_id,
&db,
&mutex_lock,
&state_lock,
)?;
// 4.3 Guest Access
@ -374,7 +374,7 @@ pub async fn register_route(
&conduit_user,
&room_id,
&db,
&mutex_lock,
&state_lock,
)?;
// 6. Events implied by name and topic
@ -393,7 +393,7 @@ pub async fn register_route(
&conduit_user,
&room_id,
&db,
&mutex_lock,
&state_lock,
)?;
db.rooms.build_and_append_pdu(
@ -410,7 +410,7 @@ pub async fn register_route(
&conduit_user,
&room_id,
&db,
&mutex_lock,
&state_lock,
)?;
// Room alias
@ -433,7 +433,7 @@ pub async fn register_route(
&conduit_user,
&room_id,
&db,
&mutex_lock,
&state_lock,
)?;
db.rooms.set_alias(&alias, Some(&room_id), &db.globals)?;
@ -458,7 +458,7 @@ pub async fn register_route(
&conduit_user,
&room_id,
&db,
&mutex_lock,
&state_lock,
)?;
db.rooms.build_and_append_pdu(
PduBuilder {
@ -479,7 +479,7 @@ pub async fn register_route(
&user_id,
&room_id,
&db,
&mutex_lock,
&state_lock,
)?;
// Send welcome message
@ -498,7 +498,7 @@ pub async fn register_route(
&conduit_user,
&room_id,
&db,
&mutex_lock,
&state_lock,
)?;
}
@ -677,15 +677,15 @@ pub async fn deactivate_route(
blurhash: None,
};
let mutex = Arc::clone(
let mutex_state = Arc::clone(
db.globals
.roomid_mutex
.roomid_mutex_state
.write()
.unwrap()
.entry(room_id.clone())
.or_default(),
);
let mutex_lock = mutex.lock().await;
let state_lock = mutex_state.lock().await;
db.rooms.build_and_append_pdu(
PduBuilder {
@ -698,7 +698,7 @@ pub async fn deactivate_route(
&sender_user,
&room_id,
&db,
&mutex_lock,
&state_lock,
)?;
}