From: Dietmar Maurer Date: Thu, 30 Sep 2021 06:03:34 +0000 (+0200) Subject: proxmox-rest-server: allow to catch SIGINT and SIGHUP separately X-Git-Tag: v2.0.12~55 X-Git-Url: https://git.proxmox.com/?p=proxmox-backup.git;a=commitdiff_plain;h=fd1b65cc3cc05545d9689d255cd391aceb8db002 proxmox-rest-server: allow to catch SIGINT and SIGHUP separately And make ServerState private. --- diff --git a/proxmox-rest-server/src/state.rs b/proxmox-rest-server/src/state.rs index 715bc1c9..e3a41e13 100644 --- a/proxmox-rest-server/src/state.rs +++ b/proxmox-rest-server/src/state.rs @@ -9,18 +9,18 @@ use tokio::signal::unix::{signal, SignalKind}; use pbs_tools::broadcast_future::BroadcastData; #[derive(PartialEq, Copy, Clone, Debug)] -pub enum ServerMode { +enum ServerMode { Normal, Shutdown, } -pub struct ServerState { - pub mode: ServerMode, - pub shutdown_listeners: BroadcastData<()>, - pub last_worker_listeners: BroadcastData<()>, - pub worker_count: usize, - pub internal_task_count: usize, - pub reload_request: bool, +struct ServerState { + mode: ServerMode, + shutdown_listeners: BroadcastData<()>, + last_worker_listeners: BroadcastData<()>, + worker_count: usize, + internal_task_count: usize, + reload_request: bool, } lazy_static! { @@ -34,12 +34,8 @@ lazy_static! { }); } -/// Listen to ``SIGINT`` and ``SIGHUP`` signals -/// -/// * ``SIGINT``: start server shutdown -/// -/// * ``SIGHUP``: start server reload -pub fn catch_shutdown_and_reload_signals() -> Result<(), Error> { +/// Listen to ``SIGINT`` for server shutdown +pub fn catch_shutdown_signal() -> Result<(), Error> { let mut stream = signal(SignalKind::interrupt())?; @@ -56,6 +52,12 @@ pub fn catch_shutdown_and_reload_signals() -> Result<(), Error> { tokio::spawn(task.map(|_| ())); + Ok(()) +} + +/// Listen to ``SIGHUP`` for server reload +pub fn catch_reload_signal() -> Result<(), Error> { + let mut stream = signal(SignalKind::hangup())?; let future = async move { diff --git a/src/bin/proxmox-backup-api.rs b/src/bin/proxmox-backup-api.rs index 38d075ee..35cfc5f0 100644 --- a/src/bin/proxmox-backup-api.rs +++ b/src/bin/proxmox-backup-api.rs @@ -127,7 +127,8 @@ async fn run() -> Result<(), Error> { let init_result: Result<(), Error> = try_block!({ proxmox_rest_server::register_task_control_commands(&mut commando_sock)?; commando_sock.spawn()?; - proxmox_rest_server::catch_shutdown_and_reload_signals()?; + proxmox_rest_server::catch_shutdown_signal()?; + proxmox_rest_server::catch_reload_signal()?; Ok(()) }); diff --git a/src/bin/proxmox-backup-proxy.rs b/src/bin/proxmox-backup-proxy.rs index 59694486..a98d4c1f 100644 --- a/src/bin/proxmox-backup-proxy.rs +++ b/src/bin/proxmox-backup-proxy.rs @@ -270,7 +270,8 @@ async fn run() -> Result<(), Error> { let init_result: Result<(), Error> = try_block!({ proxmox_rest_server::register_task_control_commands(&mut commando_sock)?; commando_sock.spawn()?; - proxmox_rest_server::catch_shutdown_and_reload_signals()?; + proxmox_rest_server::catch_shutdown_signal()?; + proxmox_rest_server::catch_reload_signal()?; Ok(()) }); diff --git a/tests/worker-task-abort.rs b/tests/worker-task-abort.rs index 75c226d3..6d7ab8da 100644 --- a/tests/worker-task-abort.rs +++ b/tests/worker-task-abort.rs @@ -53,7 +53,6 @@ fn worker_task_abort() -> Result<(), Error> { let init_result: Result<(), Error> = try_block!({ proxmox_rest_server::register_task_control_commands(&mut commando_sock)?; - proxmox_rest_server::catch_shutdown_and_reload_signals()?; Ok(()) });