]> git.proxmox.com Git - proxmox-backup.git/commitdiff
start hyper server using with_graceful_shutdown()
authorDietmar Maurer <dietmar@proxmox.com>
Wed, 10 Apr 2019 06:24:32 +0000 (08:24 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Wed, 10 Apr 2019 06:24:32 +0000 (08:24 +0200)
Without, hyper keeps some futures running, and the server does not
correctly shutdown.

src/bin/proxmox-backup-api.rs
src/bin/proxmox-backup-proxy.rs
src/tools/daemon.rs

index 36d1eefe3147060b756a8f8234c0ec3c48a4e1ed..a9a71f3e12825e6b7661314aac4d199398274643 100644 (file)
@@ -60,8 +60,9 @@ fn run() -> Result<(), Error> {
         ([127,0,0,1], 82).into(),
         |listener| {
             Ok(hyper::Server::builder(listener.incoming())
-                .serve(rest_server)
-                .map_err(|e| eprintln!("server error: {}", e))
+               .serve(rest_server)
+               .with_graceful_shutdown(server::shutdown_future())
+               .map_err(|e| eprintln!("server error: {}", e))
             )
         },
     )?;
@@ -77,7 +78,10 @@ fn run() -> Result<(), Error> {
         if let Err(err) = init_result {
             eprintln!("unable to start daemon - {}", err);
         } else {
-            tokio::spawn(server);
+            tokio::spawn(server.then(|_| {
+                log::info!("done - exit server");
+                Ok(())
+            }));
         }
 
         Ok(())
index 9661cbe1731be58b842bdc0c9f3e16072cd5a083..60f663caaf106018a2c2dcc80669f6f8745e5d00 100644 (file)
@@ -91,9 +91,11 @@ fn run() -> Result<(), Error> {
                     // Filter out the Nones
                     r
                 });
+
             Ok(hyper::Server::builder(connections)
-                .serve(rest_server)
-                .map_err(|e| eprintln!("server error: {}", e))
+               .serve(rest_server)
+               .with_graceful_shutdown(server::shutdown_future())
+               .map_err(|err| eprintln!("server error: {}", err))
             )
         },
     )?;
@@ -109,7 +111,10 @@ fn run() -> Result<(), Error> {
         if let Err(err) = init_result {
             eprintln!("unable to start daemon - {}", err);
         } else {
-            tokio::spawn(server);
+            tokio::spawn(server.then(|_| {
+                log::info!("done - exit server");
+                Ok(())
+            }));
         }
 
         Ok(())
index e3becbd55d778075700729b65cb436d3468c2eb1..de6795201d583f7ba262d3e37ac63de4d9a71b5b 100644 (file)
@@ -169,9 +169,7 @@ where
 
     let mut reloader = Some(reloader);
 
-    let abort_future = server::shutdown_future().map_err(|_| {});
     Ok(service
-       .select(abort_future)
        .map(move |_| {
            crate::tools::request_shutdown(); // make sure we are in shutdown mode
            if server::is_reload_request() {