Files
Mangalord/backend/Cargo.toml
MechaCat02 31704e18d5 fix(crawler): unhang shutdown on lingering Arc<Browser>, silence WS noise (0.43.1)
Two crawler shutdown UX fixes:

- Handle::close now aborts its chromiumoxide driver task when another
  Arc<Browser> outlives the shutdown call. The previous fallback dropped
  the local Arc and awaited the driver, but the chromiumoxide handler
  stream doesn't terminate on its own, so the shutdown future hung
  indefinitely on Ctrl-C. Extracted into a generic close_or_abort helper
  with regression tests covering both the unique-Arc and shared-Arc paths.
- main::main wraps daemon.shutdown() in a 5s timeout as a defense in
  depth so any future wedge can't trap the process from exiting.
- Default RUST_LOG (and .env.example) silence
  chromiumoxide::conn / chromiumoxide::handler, which spam ERROR on
  every CDP event the bundled types don't model.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-31 14:46:40 +02:00

60 lines
1.7 KiB
TOML

[package]
name = "mangalord"
version = "0.43.1"
edition = "2021"
default-run = "mangalord"
[lib]
path = "src/lib.rs"
[[bin]]
name = "mangalord"
path = "src/main.rs"
[[bin]]
name = "crawler"
path = "src/bin/crawler.rs"
[dependencies]
axum = { version = "0.7", features = ["macros", "multipart"] }
tokio = { version = "1", features = ["full"] }
sqlx = { version = "0.8", features = ["runtime-tokio", "postgres", "uuid", "chrono", "macros", "migrate"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
uuid = { version = "1", features = ["v4", "serde"] }
chrono = { version = "0.4", features = ["serde"] }
chrono-tz = "0.9"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
tower = { version = "0.5", features = ["util"] }
tower-http = { version = "0.6", features = ["trace", "cors"] }
thiserror = "1"
anyhow = "1"
async-trait = "0.1"
dotenvy = "0.15"
argon2 = "0.5"
rand = "0.8"
sha2 = "0.10"
subtle = "2"
base64 = "0.22"
axum-extra = { version = "0.9", features = ["cookie", "typed-header"] }
time = "0.3"
infer = "0.16"
tokio-util = { version = "0.7", features = ["io"] }
futures-core = "0.3"
futures-util = "0.3"
bytes = "1"
chromiumoxide = { version = "0.7", features = ["tokio-runtime", "_fetcher-rusttls-tokio"], default-features = false }
sysinfo = { version = "0.32", default-features = false, features = ["system"] }
nix = { version = "0.29", features = ["fs"] }
scraper = "0.20"
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "socks", "cookies", "stream"] }
[dev-dependencies]
tempfile = "3"
tower = { version = "0.5", features = ["util"] }
http-body-util = "0.1"
mime = "0.3"
futures-util = "0.3"
tokio = { version = "1", features = ["test-util"] }