From f783b9b00da5df176fcd7927b752f574ca6db319 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 7e89949..5571e73 100644
|
--- a/blivet/util.py
|
+++ b/blivet/util.py
|
@@ -163,14 +163,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
|