From 5c8ed9a8ca1b39f49f25bb8eb0d6ed701cc733d1 Mon Sep 17 00:00:00 2001 From: Jai Agrawal <18202329+Geometrically@users.noreply.github.com> Date: Sun, 9 Mar 2025 13:01:24 -0700 Subject: [PATCH] Tracing support (#3372) * Tracing support * Add console subscriber * Add console subscriber --- .cargo/config.toml | 3 + Cargo.lock | 312 ++++++++++++++++-- apps/labrinth/Cargo.toml | 7 +- .../src/database/postgres_database.rs | 2 +- apps/labrinth/src/lib.rs | 2 +- apps/labrinth/src/main.rs | 11 +- apps/labrinth/src/queue/maxmind.rs | 2 +- apps/labrinth/src/routes/internal/admin.rs | 2 +- apps/labrinth/src/routes/internal/billing.rs | 2 +- apps/labrinth/src/routes/internal/statuses.rs | 7 +- .../src/routes/v3/version_creation.rs | 2 +- apps/labrinth/src/scheduler.rs | 2 +- .../src/search/indexing/local_import.rs | 2 +- apps/labrinth/src/search/indexing/mod.rs | 2 +- 14 files changed, 306 insertions(+), 52 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index ca333857a..a52d5a685 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -1,3 +1,6 @@ # Windows has stack overflows when calling from Tauri, so we increase compiler size [target.'cfg(windows)'] rustflags = ["-C", "link-args=/STACK:16777220"] + +[build] +rustflags = ["--cfg", "tokio_unstable"] \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index ff38ac482..ed6c485b2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -631,6 +631,28 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "async-stripe" version = "0.39.1" @@ -793,6 +815,53 @@ dependencies = [ "thiserror 1.0.64", ] +[[package]] +name = "axum" +version = "0.7.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edca88bc138befd0323b20752846e6587272d3b03b0343c8ea28a6f819e6e71f" +dependencies = [ + "async-trait", + "axum-core", + "bytes 1.7.2", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "itoa 1.0.11", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "sync_wrapper 1.0.1", + "tower 0.5.2", + "tower-layer", + "tower-service", +] + +[[package]] +name = "axum-core" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" +dependencies = [ + "async-trait", + "bytes 1.7.2", + "futures-util", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper 1.0.1", + "tower-layer", + "tower-service", +] + [[package]] name = "backtrace" version = "0.3.74" @@ -1450,6 +1519,45 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "console-api" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8030735ecb0d128428b64cd379809817e620a40e5001c54465b99ec5feec2857" +dependencies = [ + "futures-core", + "prost", + "prost-types", + "tonic", + "tracing-core", +] + +[[package]] +name = "console-subscriber" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6539aa9c6a4cd31f4b1c040f860a1eac9aa80e7df6b05d506a6e7179936d6a01" +dependencies = [ + "console-api", + "crossbeam-channel", + "crossbeam-utils 0.8.20", + "futures-task", + "hdrhistogram", + "humantime", + "hyper-util", + "prost", + "prost-types", + "serde", + "serde_json", + "thread_local", + "tokio 1.42.0", + "tokio-stream", + "tonic", + "tracing", + "tracing-core", + "tracing-subscriber", +] + [[package]] name = "const-oid" version = "0.9.6" @@ -2441,19 +2549,6 @@ dependencies = [ "syn 2.0.90", ] -[[package]] -name = "env_logger" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" -dependencies = [ - "humantime", - "is-terminal", - "log", - "regex", - "termcolor", -] - [[package]] name = "equivalent" version = "1.0.1" @@ -3301,6 +3396,19 @@ dependencies = [ "hashbrown 0.14.5", ] +[[package]] +name = "hdrhistogram" +version = "7.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d" +dependencies = [ + "base64 0.21.7", + "byteorder", + "flate2", + "nom", + "num-traits", +] + [[package]] name = "heck" version = "0.3.3" @@ -3540,6 +3648,7 @@ dependencies = [ "http 1.1.0", "http-body 1.0.1", "httparse", + "httpdate", "itoa 1.0.11", "pin-project-lite", "smallvec 1.13.2", @@ -3582,6 +3691,19 @@ dependencies = [ "webpki-roots 0.26.6", ] +[[package]] +name = "hyper-timeout" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" +dependencies = [ + "hyper 1.4.1", + "hyper-util", + "pin-project-lite", + "tokio 1.42.0", + "tower-service", +] + [[package]] name = "hyper-tls" version = "0.5.0" @@ -3613,9 +3735,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes 1.7.2", "futures-channel", @@ -4263,12 +4385,12 @@ dependencies = [ "chrono", "clickhouse", "color-thief", + "console-subscriber", "dashmap 5.5.3", "deadpool-redis", "derive-new", "dotenvy", "either", - "env_logger", "flate2", "futures 0.3.30", "futures-timer", @@ -4284,7 +4406,6 @@ dependencies = [ "json-patch", "lazy_static", "lettre", - "log", "maxminddb", "meilisearch-sdk", "murmur2", @@ -4314,6 +4435,9 @@ dependencies = [ "tokio 1.42.0", "tokio-stream", "totp-rs", + "tracing", + "tracing-actix-web", + "tracing-subscriber", "url", "urlencoding", "uuid 1.12.0", @@ -4604,6 +4728,12 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + [[package]] name = "maxminddb" version = "0.24.0" @@ -4862,6 +4992,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb585ade2549a017db2e35978b77c319214fa4b37cede841e27954dd6e8f3ca8" +[[package]] +name = "mutually_exclusive_features" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94e1e6445d314f972ff7395df2de295fe51b71821694f0b0e1e79c4f12c8577" + [[package]] name = "native-dialog" version = "0.7.0" @@ -6138,6 +6274,38 @@ dependencies = [ "thiserror 1.0.64", ] +[[package]] +name = "prost" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" +dependencies = [ + "bytes 1.7.2", + "prost-derive", +] + +[[package]] +name = "prost-derive" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" +dependencies = [ + "anyhow", + "itertools 0.13.0", + "proc-macro2", + "quote", + "syn 2.0.90", +] + +[[package]] +name = "prost-types" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" +dependencies = [ + "prost", +] + [[package]] name = "protobuf" version = "2.28.0" @@ -8911,15 +9079,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - [[package]] name = "theseus" version = "0.9.3" @@ -9502,6 +9661,36 @@ dependencies = [ "winnow 0.6.20", ] +[[package]] +name = "tonic" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" +dependencies = [ + "async-stream", + "async-trait", + "axum", + "base64 0.22.1", + "bytes 1.7.2", + "h2 0.4.6", + "http 1.1.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.4.1", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "prost", + "socket2", + "tokio 1.42.0", + "tokio-stream", + "tower 0.4.13", + "tower-layer", + "tower-service", + "tracing", +] + [[package]] name = "totp-rs" version = "5.6.0" @@ -9516,6 +9705,46 @@ dependencies = [ "sha2 0.10.8", ] +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "indexmap 1.9.3", + "pin-project", + "pin-project-lite", + "rand 0.8.5", + "slab", + "tokio 1.42.0", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper 1.0.1", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + [[package]] name = "tower-service" version = "0.3.3" @@ -9524,9 +9753,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -9535,10 +9764,23 @@ dependencies = [ ] [[package]] -name = "tracing-attributes" -version = "0.1.27" +name = "tracing-actix-web" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "332bbdf3bd208d1fe6446f8ffb4e8c2ae66e25da0fb38e0b69545e640ecee6a6" +dependencies = [ + "actix-web", + "mutually_exclusive_features", + "pin-project", + "tracing", + "uuid 1.12.0", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", @@ -9547,9 +9789,9 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -9590,9 +9832,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "chrono", "matchers", diff --git a/apps/labrinth/Cargo.toml b/apps/labrinth/Cargo.toml index ce023ba3a..928af6aa3 100644 --- a/apps/labrinth/Cargo.toml +++ b/apps/labrinth/Cargo.toml @@ -21,6 +21,11 @@ prometheus = "0.13.4" actix-web-prom = { version = "0.9.0", features = ["process"] } governor = "0.6.3" +tracing = "0.1.41" +tracing-subscriber = "0.3.19" +tracing-actix-web = "0.7.16" +console-subscriber = "0.4.1" + tokio = { version = "1.35.1", features = ["sync"] } tokio-stream = "0.1.14" @@ -74,8 +79,6 @@ censor = "0.3.0" spdx = { version = "0.10.3", features = ["text"] } dotenvy = "0.15.7" -log = "0.4.20" -env_logger = "0.10.1" thiserror = "1.0.56" either = "1.13" diff --git a/apps/labrinth/src/database/postgres_database.rs b/apps/labrinth/src/database/postgres_database.rs index c90e37f90..3ace44dfe 100644 --- a/apps/labrinth/src/database/postgres_database.rs +++ b/apps/labrinth/src/database/postgres_database.rs @@ -1,9 +1,9 @@ -use log::info; use prometheus::{IntGauge, Registry}; use sqlx::migrate::MigrateDatabase; use sqlx::postgres::{PgPool, PgPoolOptions}; use sqlx::{Connection, PgConnection, Postgres}; use std::time::Duration; +use tracing::info; pub async fn connect() -> Result { info!("Initializing database connection"); diff --git a/apps/labrinth/src/lib.rs b/apps/labrinth/src/lib.rs index 5d946fbdc..f520bd157 100644 --- a/apps/labrinth/src/lib.rs +++ b/apps/labrinth/src/lib.rs @@ -4,12 +4,12 @@ use std::time::Duration; use actix_web::web; use database::redis::RedisPool; -use log::{info, warn}; use queue::{ analytics::AnalyticsQueue, payouts::PayoutsQueue, session::AuthQueue, socket::ActiveSockets, }; use sqlx::Postgres; +use tracing::{info, warn}; extern crate clickhouse as clickhouse_crate; use clickhouse_crate::Client; diff --git a/apps/labrinth/src/main.rs b/apps/labrinth/src/main.rs index d9b0b7b12..2878ef125 100644 --- a/apps/labrinth/src/main.rs +++ b/apps/labrinth/src/main.rs @@ -1,13 +1,16 @@ use actix_web::{App, HttpServer}; use actix_web_prom::PrometheusMetricsBuilder; -use env_logger::Env; use labrinth::database::redis::RedisPool; use labrinth::file_hosting::S3Host; use labrinth::search; use labrinth::util::ratelimit::RateLimit; use labrinth::{check_env_vars, clickhouse, database, file_hosting, queue}; -use log::{error, info}; use std::sync::Arc; +use tracing::{error, info}; +use tracing_actix_web::TracingLogger; +use tracing_subscriber::layer::SubscriberExt; +use tracing_subscriber::util::SubscriberInitExt; +use tracing_subscriber::{fmt, EnvFilter}; #[cfg(feature = "jemalloc")] #[global_allocator] @@ -21,8 +24,7 @@ pub struct Pepper { #[actix_rt::main] async fn main() -> std::io::Result<()> { dotenvy::dotenv().ok(); - env_logger::Builder::from_env(Env::default().default_filter_or("info")) - .init(); + console_subscriber::init(); if check_env_vars() { error!("Some environment variables are missing!"); @@ -123,6 +125,7 @@ async fn main() -> std::io::Result<()> { // Init App HttpServer::new(move || { App::new() + .wrap(TracingLogger::default()) .wrap(prometheus.clone()) .wrap(RateLimit(Arc::clone(&labrinth_config.rate_limiter))) .wrap(actix_web::middleware::Compress::default()) diff --git a/apps/labrinth/src/queue/maxmind.rs b/apps/labrinth/src/queue/maxmind.rs index e551a8ca4..30a83d1ec 100644 --- a/apps/labrinth/src/queue/maxmind.rs +++ b/apps/labrinth/src/queue/maxmind.rs @@ -1,10 +1,10 @@ use flate2::read::GzDecoder; -use log::warn; use maxminddb::geoip2::Country; use std::io::{Cursor, Read}; use std::net::Ipv6Addr; use tar::Archive; use tokio::sync::RwLock; +use tracing::warn; pub struct MaxMindIndexer { pub reader: RwLock>>>, diff --git a/apps/labrinth/src/routes/internal/admin.rs b/apps/labrinth/src/routes/internal/admin.rs index cf7f8a10c..a6db8dcdc 100644 --- a/apps/labrinth/src/routes/internal/admin.rs +++ b/apps/labrinth/src/routes/internal/admin.rs @@ -15,12 +15,12 @@ use crate::search::SearchConfig; use crate::util::date::get_current_tenths_of_ms; use crate::util::guards::admin_key_guard; use actix_web::{get, patch, post, web, HttpRequest, HttpResponse}; -use log::info; use serde::Deserialize; use sqlx::PgPool; use std::collections::HashMap; use std::net::Ipv4Addr; use std::sync::Arc; +use tracing::info; pub fn config(cfg: &mut web::ServiceConfig) { cfg.service( diff --git a/apps/labrinth/src/routes/internal/billing.rs b/apps/labrinth/src/routes/internal/billing.rs index 28c9954c1..8488af0da 100644 --- a/apps/labrinth/src/routes/internal/billing.rs +++ b/apps/labrinth/src/routes/internal/billing.rs @@ -17,7 +17,6 @@ use crate::routes::ApiError; use actix_web::{delete, get, patch, post, web, HttpRequest, HttpResponse}; use ariadne::ids::base62_impl::{parse_base62, to_base62}; use chrono::Utc; -use log::{info, warn}; use rust_decimal::prelude::ToPrimitive; use rust_decimal::Decimal; use serde::Serialize; @@ -34,6 +33,7 @@ use stripe::{ PaymentIntentSetupFutureUsage, PaymentMethodId, SetupIntent, UpdateCustomer, Webhook, }; +use tracing::{info, warn}; pub fn config(cfg: &mut web::ServiceConfig) { cfg.service( diff --git a/apps/labrinth/src/routes/internal/statuses.rs b/apps/labrinth/src/routes/internal/statuses.rs index 5054ad678..0c5c08ad6 100644 --- a/apps/labrinth/src/routes/internal/statuses.rs +++ b/apps/labrinth/src/routes/internal/statuses.rs @@ -114,7 +114,7 @@ pub async fn ws_init( .insert(socket_id); #[cfg(debug_assertions)] - log::info!("Connection {socket_id} opened by {}", user.id); + tracing::info!("Connection {socket_id} opened by {}", user.id); broadcast_friends( user.id, @@ -161,7 +161,10 @@ pub async fn ws_init( #[cfg(debug_assertions)] if !message.is_binary() { - log::info!("Received message from {socket_id}: {:?}", message); + tracing::info!( + "Received message from {socket_id}: {:?}", + message + ); } match message { diff --git a/apps/labrinth/src/routes/v3/version_creation.rs b/apps/labrinth/src/routes/v3/version_creation.rs index cd1c52308..0b91cd0e4 100644 --- a/apps/labrinth/src/routes/v3/version_creation.rs +++ b/apps/labrinth/src/routes/v3/version_creation.rs @@ -31,11 +31,11 @@ use actix_web::{web, HttpRequest, HttpResponse}; use chrono::Utc; use futures::stream::StreamExt; use itertools::Itertools; -use log::error; use serde::{Deserialize, Serialize}; use sqlx::postgres::PgPool; use std::collections::{HashMap, HashSet}; use std::sync::Arc; +use tracing::error; use validator::Validate; fn default_requested_status() -> VersionStatus { diff --git a/apps/labrinth/src/scheduler.rs b/apps/labrinth/src/scheduler.rs index 7bc5e5195..f94540392 100644 --- a/apps/labrinth/src/scheduler.rs +++ b/apps/labrinth/src/scheduler.rs @@ -36,7 +36,7 @@ impl Drop for Scheduler { } } -use log::{info, warn}; +use tracing::{info, warn}; pub fn schedule_versions( scheduler: &mut Scheduler, diff --git a/apps/labrinth/src/search/indexing/local_import.rs b/apps/labrinth/src/search/indexing/local_import.rs index 4306888f3..c9b2eeaea 100644 --- a/apps/labrinth/src/search/indexing/local_import.rs +++ b/apps/labrinth/src/search/indexing/local_import.rs @@ -2,8 +2,8 @@ use chrono::{DateTime, Utc}; use dashmap::DashMap; use futures::TryStreamExt; use itertools::Itertools; -use log::info; use std::collections::HashMap; +use tracing::info; use super::IndexingError; use crate::database::models::loader_fields::{ diff --git a/apps/labrinth/src/search/indexing/mod.rs b/apps/labrinth/src/search/indexing/mod.rs index 28de1c12a..3f4dcdee9 100644 --- a/apps/labrinth/src/search/indexing/mod.rs +++ b/apps/labrinth/src/search/indexing/mod.rs @@ -5,12 +5,12 @@ use crate::database::redis::RedisPool; use crate::search::{SearchConfig, UploadSearchProject}; use ariadne::ids::base62_impl::to_base62; use local_import::index_local; -use log::info; use meilisearch_sdk::client::{Client, SwapIndexes}; use meilisearch_sdk::indexes::Index; use meilisearch_sdk::settings::{PaginationSetting, Settings}; use sqlx::postgres::PgPool; use thiserror::Error; +use tracing::info; #[derive(Error, Debug)] pub enum IndexingError { #[error("Error while connecting to the MeiliSearch database")]