|
1 | 1 | use synd_o11y::{opentelemetry::OpenTelemetryGuard, tracing_subscriber::otel_metrics};
|
2 | 2 | use tracing::{error, info};
|
3 | 3 |
|
4 |
| -use synd_api::{args, config, dependency::Dependency, serve::listen_and_serve, shutdown::Shutdown}; |
| 4 | +use synd_api::{ |
| 5 | + args::{self, Args}, |
| 6 | + config, |
| 7 | + dependency::Dependency, |
| 8 | + repository::kvsd::ConnectKvsdFailed, |
| 9 | + serve::listen_and_serve, |
| 10 | + shutdown::Shutdown, |
| 11 | +}; |
5 | 12 |
|
6 | 13 | fn init_tracing() -> Option<OpenTelemetryGuard> {
|
7 | 14 | use synd_o11y::{
|
@@ -65,17 +72,26 @@ fn init_tracing() -> Option<OpenTelemetryGuard> {
|
65 | 72 | guard
|
66 | 73 | }
|
67 | 74 |
|
| 75 | +async fn run(Args { kvsd, tls }: Args, shutdown: Shutdown) -> anyhow::Result<()> { |
| 76 | + let dep = Dependency::new(kvsd, tls).await?; |
| 77 | + |
| 78 | + info!(version = config::VERSION, "Runinng..."); |
| 79 | + |
| 80 | + listen_and_serve(dep, shutdown.notify()).await |
| 81 | +} |
| 82 | + |
68 | 83 | #[tokio::main]
|
69 | 84 | async fn main() {
|
70 | 85 | let args = args::parse();
|
71 | 86 | let _guard = init_tracing();
|
72 |
| - let dep = Dependency::new(args.kvsd).await.unwrap(); |
73 | 87 | let shutdown = Shutdown::watch_signal();
|
74 | 88 |
|
75 |
| - info!(version = config::VERSION, "Runinng..."); |
76 |
| - |
77 |
| - if let Err(err) = listen_and_serve(dep, shutdown.notify()).await { |
78 |
| - error!("{err:?}"); |
| 89 | + if let Err(err) = run(args, shutdown).await { |
| 90 | + if let Some(err) = err.downcast_ref::<ConnectKvsdFailed>() { |
| 91 | + error!("{err}: make sure kvsd is running"); |
| 92 | + } else { |
| 93 | + error!("{err:?}"); |
| 94 | + } |
79 | 95 | std::process::exit(1);
|
80 | 96 | }
|
81 | 97 | }
|
0 commit comments