mirror of
https://gitlab.com/famedly/conduit.git
synced 2024-12-26 09:14:34 +01:00
Merge branch 'more-logging-enrichment' into 'next'
Slightly more logging improvements See merge request famedly/conduit!530
This commit is contained in:
commit
888f7e4403
3 changed files with 26 additions and 15 deletions
|
@ -221,6 +221,7 @@ pub(crate) async fn get_public_rooms_filtered_helper(
|
||||||
serde_json::from_str(s.content.get())
|
serde_json::from_str(s.content.get())
|
||||||
.map(|c: RoomTopicEventContent| Some(c.topic))
|
.map(|c: RoomTopicEventContent| Some(c.topic))
|
||||||
.map_err(|_| {
|
.map_err(|_| {
|
||||||
|
error!("Invalid room topic event in database for room {}", room_id);
|
||||||
Error::bad_database("Invalid room topic event in database.")
|
Error::bad_database("Invalid room topic event in database.")
|
||||||
})
|
})
|
||||||
})?,
|
})?,
|
||||||
|
|
35
src/main.rs
35
src/main.rs
|
@ -40,7 +40,7 @@ use tower_http::{
|
||||||
trace::TraceLayer,
|
trace::TraceLayer,
|
||||||
ServiceBuilderExt as _,
|
ServiceBuilderExt as _,
|
||||||
};
|
};
|
||||||
use tracing::{error, info, warn};
|
use tracing::{debug, error, info, warn};
|
||||||
use tracing_subscriber::{prelude::*, EnvFilter};
|
use tracing_subscriber::{prelude::*, EnvFilter};
|
||||||
|
|
||||||
pub use conduit::*; // Re-export everything from the library crate
|
pub use conduit::*; // Re-export everything from the library crate
|
||||||
|
@ -54,17 +54,7 @@ static GLOBAL: Jemalloc = Jemalloc;
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() {
|
async fn main() {
|
||||||
// This is needed for opening lots of file descriptors, which tends to
|
// Initialize config
|
||||||
// happen more often when using RocksDB and making lots of federation
|
|
||||||
// connections at startup. The soft limit is usually 1024, and the hard
|
|
||||||
// limit is usually 512000; I've personally seen it hit >2000.
|
|
||||||
//
|
|
||||||
// * https://www.freedesktop.org/software/systemd/man/systemd.exec.html#id-1.12.2.1.17.6
|
|
||||||
// * https://github.com/systemd/systemd/commit/0abf94923b4a95a7d89bc526efc84e7ca2b71741
|
|
||||||
#[cfg(unix)]
|
|
||||||
maximize_fd_limit().expect("should be able to increase the soft limit to the hard limit");
|
|
||||||
|
|
||||||
// Initialize DB
|
|
||||||
let raw_config =
|
let raw_config =
|
||||||
Figment::new()
|
Figment::new()
|
||||||
.merge(
|
.merge(
|
||||||
|
@ -135,6 +125,16 @@ async fn main() {
|
||||||
tracing::subscriber::set_global_default(subscriber).unwrap();
|
tracing::subscriber::set_global_default(subscriber).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This is needed for opening lots of file descriptors, which tends to
|
||||||
|
// happen more often when using RocksDB and making lots of federation
|
||||||
|
// connections at startup. The soft limit is usually 1024, and the hard
|
||||||
|
// limit is usually 512000; I've personally seen it hit >2000.
|
||||||
|
//
|
||||||
|
// * https://www.freedesktop.org/software/systemd/man/systemd.exec.html#id-1.12.2.1.17.6
|
||||||
|
// * https://github.com/systemd/systemd/commit/0abf94923b4a95a7d89bc526efc84e7ca2b71741
|
||||||
|
#[cfg(unix)]
|
||||||
|
maximize_fd_limit().expect("should be able to increase the soft limit to the hard limit");
|
||||||
|
|
||||||
info!("Loading database");
|
info!("Loading database");
|
||||||
if let Err(error) = KeyValueDatabase::load_or_create(config).await {
|
if let Err(error) = KeyValueDatabase::load_or_create(config).await {
|
||||||
error!(?error, "The database couldn't be loaded or created");
|
error!(?error, "The database couldn't be loaded or created");
|
||||||
|
@ -569,12 +569,19 @@ fn method_to_filter(method: Method) -> MethodFilter {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(unix)]
|
#[cfg(unix)]
|
||||||
|
#[tracing::instrument(err)]
|
||||||
fn maximize_fd_limit() -> Result<(), nix::errno::Errno> {
|
fn maximize_fd_limit() -> Result<(), nix::errno::Errno> {
|
||||||
use nix::sys::resource::{getrlimit, setrlimit, Resource};
|
use nix::sys::resource::{getrlimit, setrlimit, Resource};
|
||||||
|
|
||||||
let res = Resource::RLIMIT_NOFILE;
|
let res = Resource::RLIMIT_NOFILE;
|
||||||
|
|
||||||
let (_, hard_limit) = getrlimit(res)?;
|
let (soft_limit, hard_limit) = getrlimit(res)?;
|
||||||
|
|
||||||
setrlimit(res, hard_limit, hard_limit)
|
debug!("Current nofile soft limit: {soft_limit}");
|
||||||
|
|
||||||
|
setrlimit(res, hard_limit, hard_limit)?;
|
||||||
|
|
||||||
|
debug!("Increased nofile soft limit to {hard_limit}");
|
||||||
|
|
||||||
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
@ -326,7 +326,10 @@ impl Service {
|
||||||
.map_or(Ok(None), |s| {
|
.map_or(Ok(None), |s| {
|
||||||
serde_json::from_str(s.content.get())
|
serde_json::from_str(s.content.get())
|
||||||
.map(|c: RoomTopicEventContent| Some(c.topic))
|
.map(|c: RoomTopicEventContent| Some(c.topic))
|
||||||
.map_err(|_| Error::bad_database("Invalid room topic event in database."))
|
.map_err(|_| {
|
||||||
|
error!("Invalid room topic event in database for room {}", room_id);
|
||||||
|
Error::bad_database("Invalid room topic event in database.")
|
||||||
|
})
|
||||||
})?,
|
})?,
|
||||||
world_readable: services()
|
world_readable: services()
|
||||||
.rooms
|
.rooms
|
||||||
|
|
Loading…
Reference in a new issue