diff options
author | Alex Auvolat <alex@adnab.me> | 2023-09-12 14:35:19 +0200 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2023-09-12 14:35:19 +0200 |
commit | aa79810596d8608c1636006018f31b34197c2123 (patch) | |
tree | 85744efa1126e8a3c4e21349c4b78f01931f5afb | |
parent | 143a349f55b0c652d407019c5850313b0c95ccbd (diff) | |
download | garage-aa79810596d8608c1636006018f31b34197c2123.tar.gz garage-aa79810596d8608c1636006018f31b34197c2123.zip |
Fix error when none of S3/K2V/WEB/ADMIN server is started (fix #613)
-rw-r--r-- | src/garage/server.rs | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/src/garage/server.rs b/src/garage/server.rs index 958089c6..472616c7 100644 --- a/src/garage/server.rs +++ b/src/garage/server.rs @@ -130,20 +130,27 @@ pub async fn run_server(config_file: PathBuf, secrets: Secrets) -> Result<(), Er warn!("This Garage version is built without the metrics feature"); } - // Stuff runs - - // When a cancel signal is sent, stuff stops - - // Collect stuff - for (desc, join_handle) in servers { - if let Err(e) = join_handle.await? { - error!("{} server exited with error: {}", desc, e); - } else { - info!("{} server exited without error.", desc); + if servers.is_empty() { + // Nothing runs except netapp (not in servers) + // Await shutdown signal before proceeding to shutting down netapp + wait_from(watch_cancel).await; + } else { + // Stuff runs + + // When a cancel signal is sent, stuff stops + + // Collect stuff + for (desc, join_handle) in servers { + if let Err(e) = join_handle.await? { + error!("{} server exited with error: {}", desc, e); + } else { + info!("{} server exited without error.", desc); + } } } // Remove RPC handlers for system to break reference cycles + info!("Deregistering RPC handlers for shutdown..."); garage.system.netapp.drop_all_handlers(); opentelemetry::global::shutdown_tracer_provider(); |