|
|
|
@ -258,7 +258,7 @@ impl KeyValueDatabase { |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
if config.max_request_size < 1024 { |
|
|
|
if config.max_request_size < 1024 { |
|
|
|
eprintln!("ERROR: Max request size is less than 1KB. Please increase it."); |
|
|
|
error!(?config.max_request_size, "Max request size is less than 1KB. Please increase it."); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
let db_raw = Box::new(Self { |
|
|
|
let db_raw = Box::new(Self { |
|
|
|
@ -483,7 +483,7 @@ impl KeyValueDatabase { |
|
|
|
for user in services().rooms.state_cache.room_members(&room?) { |
|
|
|
for user in services().rooms.state_cache.room_members(&room?) { |
|
|
|
let user = user?; |
|
|
|
let user = user?; |
|
|
|
if user.server_name() != services().globals.server_name() { |
|
|
|
if user.server_name() != services().globals.server_name() { |
|
|
|
println!("Migration: Creating user {}", user); |
|
|
|
info!(?user, "Migration: creating user"); |
|
|
|
services().users.create(&user, None)?; |
|
|
|
services().users.create(&user, None)?; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -545,7 +545,6 @@ impl KeyValueDatabase { |
|
|
|
current_state: HashSet<_>, |
|
|
|
current_state: HashSet<_>, |
|
|
|
last_roomstates: &mut HashMap<_, _>| { |
|
|
|
last_roomstates: &mut HashMap<_, _>| { |
|
|
|
counter += 1; |
|
|
|
counter += 1; |
|
|
|
println!("counter: {}", counter); |
|
|
|
|
|
|
|
let last_roomsstatehash = last_roomstates.get(current_room); |
|
|
|
let last_roomsstatehash = last_roomstates.get(current_room); |
|
|
|
|
|
|
|
|
|
|
|
let states_parents = last_roomsstatehash.map_or_else( |
|
|
|
let states_parents = last_roomsstatehash.map_or_else( |
|
|
|
@ -742,15 +741,13 @@ impl KeyValueDatabase { |
|
|
|
new_key.extend_from_slice(word); |
|
|
|
new_key.extend_from_slice(word); |
|
|
|
new_key.push(0xff); |
|
|
|
new_key.push(0xff); |
|
|
|
new_key.extend_from_slice(pdu_id_count); |
|
|
|
new_key.extend_from_slice(pdu_id_count); |
|
|
|
println!("old {:?}", key); |
|
|
|
|
|
|
|
println!("new {:?}", new_key); |
|
|
|
|
|
|
|
Some((new_key, Vec::new())) |
|
|
|
Some((new_key, Vec::new())) |
|
|
|
}) |
|
|
|
}) |
|
|
|
.peekable(); |
|
|
|
.peekable(); |
|
|
|
|
|
|
|
|
|
|
|
while iter.peek().is_some() { |
|
|
|
while iter.peek().is_some() { |
|
|
|
db.tokenids.insert_batch(&mut iter.by_ref().take(1000))?; |
|
|
|
db.tokenids.insert_batch(&mut iter.by_ref().take(1000))?; |
|
|
|
println!("smaller batch done"); |
|
|
|
debug!("Inserted smaller batch"); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
info!("Deleting starts"); |
|
|
|
info!("Deleting starts"); |
|
|
|
@ -760,7 +757,6 @@ impl KeyValueDatabase { |
|
|
|
.iter() |
|
|
|
.iter() |
|
|
|
.filter_map(|(key, _)| { |
|
|
|
.filter_map(|(key, _)| { |
|
|
|
if key.starts_with(b"!") { |
|
|
|
if key.starts_with(b"!") { |
|
|
|
println!("del {:?}", key); |
|
|
|
|
|
|
|
Some(key) |
|
|
|
Some(key) |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
None |
|
|
|
None |
|
|
|
@ -769,7 +765,6 @@ impl KeyValueDatabase { |
|
|
|
.collect(); |
|
|
|
.collect(); |
|
|
|
|
|
|
|
|
|
|
|
for key in batch2 { |
|
|
|
for key in batch2 { |
|
|
|
println!("del"); |
|
|
|
|
|
|
|
db.tokenids.remove(&key)?; |
|
|
|
db.tokenids.remove(&key)?; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -945,7 +940,6 @@ impl KeyValueDatabase { |
|
|
|
|
|
|
|
|
|
|
|
#[cfg(unix)] |
|
|
|
#[cfg(unix)] |
|
|
|
use tokio::signal::unix::{signal, SignalKind}; |
|
|
|
use tokio::signal::unix::{signal, SignalKind}; |
|
|
|
use tracing::info; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
use std::time::{Duration, Instant}; |
|
|
|
use std::time::{Duration, Instant}; |
|
|
|
|
|
|
|
|
|
|
|
@ -961,23 +955,23 @@ impl KeyValueDatabase { |
|
|
|
#[cfg(unix)] |
|
|
|
#[cfg(unix)] |
|
|
|
tokio::select! { |
|
|
|
tokio::select! { |
|
|
|
_ = i.tick() => { |
|
|
|
_ = i.tick() => { |
|
|
|
info!("cleanup: Timer ticked"); |
|
|
|
debug!("cleanup: Timer ticked"); |
|
|
|
} |
|
|
|
} |
|
|
|
_ = s.recv() => { |
|
|
|
_ = s.recv() => { |
|
|
|
info!("cleanup: Received SIGHUP"); |
|
|
|
debug!("cleanup: Received SIGHUP"); |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
}; |
|
|
|
#[cfg(not(unix))] |
|
|
|
#[cfg(not(unix))] |
|
|
|
{ |
|
|
|
{ |
|
|
|
i.tick().await; |
|
|
|
i.tick().await; |
|
|
|
info!("cleanup: Timer ticked") |
|
|
|
debug!("cleanup: Timer ticked") |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
let start = Instant::now(); |
|
|
|
let start = Instant::now(); |
|
|
|
if let Err(e) = services().globals.cleanup() { |
|
|
|
if let Err(e) = services().globals.cleanup() { |
|
|
|
error!("cleanup: Errored: {}", e); |
|
|
|
error!("cleanup: Errored: {}", e); |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
info!("cleanup: Finished in {:?}", start.elapsed()); |
|
|
|
debug!("cleanup: Finished in {:?}", start.elapsed()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}); |
|
|
|
}); |
|
|
|
|