]> git.proxmox.com Git - proxmox-backup.git/commit
daemon: add hack for sd_notify
authorDominik Csapak <d.csapak@proxmox.com>
Wed, 11 Nov 2020 08:27:51 +0000 (09:27 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Wed, 11 Nov 2020 08:43:00 +0000 (09:43 +0100)
commitd7c6ad60ddba392d1d7c4430c0821df8e50e9ad5
tree35dacaa7e0f675e966fcb413883bd009e90e3b95
parent0a0ba0785b19116ec39a99c51c584cc897ab858e
daemon: add hack for sd_notify

sd_notify is not synchronous, iow. it only waits until the message
reaches the queue not until it is processed by systemd

when the process that sent such a message exits before systemd could
process it, it cannot be associated to the correct pid

so in case of reloading, we send a message with 'MAINPID=<newpid>'
to signal that it will change. if now the old process exits before
systemd knows this, it will not accept the 'READY=1' message from the
child, since it rejects the MAINPID change

since there is no (AFAICS) library interface to check the unit status,
we use 'systemctl is-active <SERVICE_NAME>' to check the state until
it is not 'reloading' anymore.

on newer systemd versions, there is 'sd_notify_barrier' which would
allow us to wait for systemd to have all messages from the current
pid to be processed before acknowledging to the child, but on buster
the systemd version is to old...

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
src/bin/proxmox-backup-api.rs
src/bin/proxmox-backup-proxy.rs
src/tools/daemon.rs