aboutsummaryrefslogtreecommitdiffstats
path: root/meta-python/recipes-extended/python-blivet/python3-blivet/0005-fix-incorrect-timeout-while-system-time-changed.patch
blob: ecb95039d04cda1f386bce45252ed82765dd8483 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
From b30a74671ca603e6bfd514f72d4fd7fd6fceef54 Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Fri, 26 Aug 2016 02:02:49 -0400
Subject: [PATCH 05/11] fix incorrect timeout while system time changed

While system time changed by NTP, invoking timeout_command
breaks with incorrect timeout.
--------
|05:40:55,872 INFO program: Running... mount -t ext2 -o
  defaults,ro /dev/sda2 /mnt/sysimage
|01:40:55,086 DEBUG program: 10 seconds timeout
--------

Use numbert count to replace current time count could workaround
the issue.

Upstream-Status: Pending

Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
---
 blivet/util.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/blivet/util.py b/blivet/util.py
index d6804be..bc08af5 100644
--- a/blivet/util.py
+++ b/blivet/util.py
@@ -162,14 +162,14 @@ def timeout_command(argv, timeout, *args, **kwargs):
     """call shell-command and either return its output or kill it
     if it doesn't normally exit within timeout seconds and return None"""
     import subprocess, datetime, os, time, signal
-    start = datetime.datetime.now()
+    count = 0
 
     try:
         proc = subprocess.Popen(argv, *args, **kwargs)
         while proc.poll() is None:
             time.sleep(0.1)
-            now = datetime.datetime.now()
-            if timeout != -1 and (now - start).seconds> timeout:
+            count += 1
+            if timeout != -1 and count > timeout*10:
                 os.kill(proc.pid, signal.SIGKILL)
                 os.waitpid(-1, os.WNOHANG)
                 program_log.debug("%d seconds timeout" % timeout)
-- 
2.7.4