From b6b87034f8ff84b8051a8b3cbcc5f8dd1942c328 Mon Sep 17 00:00:00 2001
From: Michael Hanselmann <hansmi@google.com>
Date: Tue, 13 Oct 2009 19:23:58 +0200
Subject: [PATCH] locking, mcpu: Ensure timeout is always >= 0.0

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>
---
 lib/locking.py | 2 +-
 lib/mcpu.py    | 3 ++-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/lib/locking.py b/lib/locking.py
index f13d7b23f..b02766191 100644
--- a/lib/locking.py
+++ b/lib/locking.py
@@ -783,7 +783,7 @@ class LockSet:
       calc_remaining_timeout = lambda: None
     else:
       start = time.time()
-      calc_remaining_timeout = lambda: (start + timeout) - time.time()
+      calc_remaining_timeout = lambda: max(0.0, (start + timeout) - time.time())
 
     try:
       if names is not None:
diff --git a/lib/mcpu.py b/lib/mcpu.py
index 647a69a7d..d53bd58f1 100644
--- a/lib/mcpu.py
+++ b/lib/mcpu.py
@@ -136,7 +136,8 @@ class _LockAttemptTimeoutStrategy(object):
     remaining_timeout += ((self._random_fn() * variation_range) -
                           (variation_range * 0.5))
 
-    assert remaining_timeout >= 0.0, "Timeout must be positive"
+    # Make sure timeout is >= 0
+    remaining_timeout = max(0.0, remaining_timeout)
 
     return remaining_timeout
 
-- 
GitLab