aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Auvolat <alex@adnab.me>2023-09-12 14:35:19 +0200
committerAlex Auvolat <alex@adnab.me>2023-09-12 14:35:19 +0200
commitaa79810596d8608c1636006018f31b34197c2123 (patch)
tree85744efa1126e8a3c4e21349c4b78f01931f5afb
parent143a349f55b0c652d407019c5850313b0c95ccbd (diff)
downloadgarage-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.rs27
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();