d759b5
From 744c445c2b259649afd0f8c715e30d7ae51b35b0 Mon Sep 17 00:00:00 2001
d759b5
Message-Id: <744c445c2b259649afd0f8c715e30d7ae51b35b0@dist-git>
d759b5
From: Christian Ehrhardt <christian.ehrhardt@canonical.com>
d759b5
Date: Wed, 4 Dec 2019 16:18:14 +0100
d759b5
Subject: [PATCH] process: wait longer 5->30s on hard shutdown
d759b5
MIME-Version: 1.0
d759b5
Content-Type: text/plain; charset=UTF-8
d759b5
Content-Transfer-Encoding: 8bit
d759b5
d759b5
In cases where virProcessKillPainfully already reailizes that
d759b5
SIGTERM wasn't enough we are partially on a bad path already.
d759b5
Maybe the system is overloaded or having serious trouble to free and
d759b5
reap resources in time.
d759b5
d759b5
In those case give the SIGKILL that was sent after 10 seconds some more
d759b5
time to take effect if force was set (only then we are falling back to
d759b5
SIGKILL anyway).
d759b5
d759b5
Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
d759b5
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
d759b5
(cherry picked from commit 9a4e4b942df0474503e7524ea427351a46c0eabe)
d759b5
d759b5
https://bugzilla.redhat.com/show_bug.cgi?id=1771204
d759b5
d759b5
Signed-off-by: Ján Tomko <jtomko@redhat.com>
d759b5
Message-Id: <963a2cb9ac181322394bc475b200b8fc65e1245a.1575472548.git.jtomko@redhat.com>
d759b5
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
d759b5
---
d759b5
 src/util/virprocess.c | 4 ++--
d759b5
 1 file changed, 2 insertions(+), 2 deletions(-)
d759b5
d759b5
diff --git a/src/util/virprocess.c b/src/util/virprocess.c
d759b5
index 297c96a8e5..1085e6cd5d 100644
d759b5
--- a/src/util/virprocess.c
d759b5
+++ b/src/util/virprocess.c
d759b5
@@ -354,7 +354,7 @@ virProcessKillPainfullyDelay(pid_t pid, bool force, unsigned int extradelay)
d759b5
     size_t i;
d759b5
     int ret = -1;
d759b5
     /* This is in 1/5th seconds since polling is on a 0.2s interval */
d759b5
-    unsigned int polldelay = 75 + (extradelay*5);
d759b5
+    unsigned int polldelay = (force ? 200 : 75) + (extradelay*5);
d759b5
     const char *signame = "TERM";
d759b5
 
d759b5
     VIR_DEBUG("vpid=%lld force=%d extradelay=%u",
d759b5
@@ -363,7 +363,7 @@ virProcessKillPainfullyDelay(pid_t pid, bool force, unsigned int extradelay)
d759b5
     /* This loop sends SIGTERM, then waits a few iterations (10 seconds)
d759b5
      * to see if it dies. If the process still hasn't exited, and
d759b5
      * @force is requested, a SIGKILL will be sent, and this will
d759b5
-     * wait up to 5 seconds more for the process to exit before
d759b5
+     * wait up to 30 seconds more for the process to exit before
d759b5
      * returning.
d759b5
      *
d759b5
      * An extra delay can be passed by the caller for cases that are
d759b5
-- 
d759b5
2.24.0
d759b5