Don't be tricked by speaker groups living on the same IP address
[python_utils.git] / lockfile.py
index ca190df09f9245bca7153945f0fee61859daa1d7..8a71ca769900983689479157de0cb3132ab731a9 100644 (file)
@@ -8,8 +8,10 @@ import os
 import signal
 import sys
 from typing import Optional
+import warnings
 
 import config
+import datetime_utils
 import decorator_utils
 
 
@@ -86,7 +88,8 @@ class LockFile(object):
             return True
         except OSError:
             pass
-        logger.warning(f'Could not acquire {self.lockfile}.')
+        msg = f'Could not acquire {self.lockfile}.'
+        logger.warning(msg)
         return False
 
     def acquire_with_retries(
@@ -131,7 +134,9 @@ class LockFile(object):
             duration = ts - self.locktime
             if duration >= config.config['lockfile_held_duration_warning_threshold_sec']:
                 str_duration = datetime_utils.describe_duration_briefly(duration)
-                logger.warning(f'Held {self.lockfile} for {str_duration}')
+                msg = f'Held {self.lockfile} for {str_duration}'
+                logger.warning(msg)
+                warnings.warn(msg, stacklevel=2)
         self.release()
 
     def __del__(self):
@@ -169,16 +174,16 @@ class LockFile(object):
                     try:
                         os.kill(contents.pid, 0)
                     except OSError:
-                        logger.warning(f'Lockfile {self.lockfile}\'s pid ({contents.pid}) is stale; ' +
-                                       'force acquiring')
+                        msg = f'Lockfile {self.lockfile}\'s pid ({contents.pid}) is stale; force acquiring'
+                        logger.warning(msg)
                         self.release()
 
                     # Has the lock expiration expired?
                     if contents.expiration_timestamp is not None:
                         now = datetime.datetime.now().timestamp()
                         if now > contents.expiration_datetime:
-                            logger.warning(f'Lockfile {self.lockfile} expiration time has passed; ' +
-                                           'force acquiring')
+                            msg = f'Lockfile {self.lockfile} expiration time has passed; force acquiring'
+                            logger.warning(msg)
                             self.release()
         except Exception:
             pass