diff --git a/backend/src/main.rs b/backend/src/main.rs index 912a001..37fca62 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -39,8 +39,8 @@ fn log(msg: &str) { let _ = std::io::stdout().flush(); } -#[tokio::main] -async fn main() -> anyhow::Result<()> { +// Wrapper to catch when main returns +async fn run() -> anyhow::Result<()> { log("=== NORMOGEN STARTING ==="); log("[1/7] Loading environment variables..."); @@ -74,6 +74,8 @@ async fn main() -> anyhow::Result<()> { }; log(&format!("[4/7] Connecting to MongoDB at {}...", config.database.uri)); + log("[4/7] Starting MongoDB connection (this may hang)..."); + let db = match db::MongoDb::new(&config.database.uri, &config.database.database).await { Ok(db) => { log("[4/7] MongoDB connection successful!"); @@ -148,10 +150,32 @@ async fn main() -> anyhow::Result<()> { log("=== SERVER READY ==="); log(&format!("Listening on http://{}:{}", config.server.host, config.server.port)); + log("About to call axum::serve (this blocks forever)..."); tracing::info!("Server listening on {}:{}", config.server.host, config.server.port); + // This should block forever axum::serve(listener, app).await?; + // This should never be reached + log("[UNEXPECTED] Server stopped!"); + Ok(()) } + +#[tokio::main] +async fn main() { + log("MAIN ENTERED"); + let result = run().await; + log(&format!("MAIN EXITING: {:?}", result)); + std::process::exit(match result { + Ok(_) => { + log("EXIT CODE 0"); + 0 + } + Err(e) => { + log(&format!("EXIT CODE 1: {}", e)); + 1 + } + }); +}