File backport-thread.is_alive-fix-390.patch of Package salt
From a782af246a2f3d4b91afee2ee847c87f71e8904b Mon Sep 17 00:00:00 2001
From: Alexander Graul <agraul@suse.com>
Date: Fri, 25 Jun 2021 13:34:38 +0200
Subject: [PATCH] Backport Thread.is_alive fix (#390)
* Change thread.isAlive() to thread.is_alive()
(cherry picked from commit b1dc0cee03896c8abad55a609805b0be6c7aaefa)
* Run pre-commit on salt/utils/timed_subprocess.py
(cherry picked from commit 178e3b83e6c21abf5d6db454c19c104ceb8bd92c)
* Fix the six removal made by pre-commit
(cherry picked from commit aaa8ca3b7f129568637799d6d49d7ad3708f73bc)
* Remove the PY2 code in salt/utils/timed_subprocess.py
(cherry picked from commit 3a702a510b965e9af1ad318c953e19114925357e)
Co-authored-by: Petr Messner <petr@leadhub.co>
Co-authored-by: Petr Messner <petr.messner@gmail.com>
---
salt/utils/timed_subprocess.py | 39 ++++++++++++++--------------------
1 file changed, 16 insertions(+), 23 deletions(-)
diff --git a/salt/utils/timed_subprocess.py b/salt/utils/timed_subprocess.py
index 5c4ac35ac3..b043a3bde2 100644
--- a/salt/utils/timed_subprocess.py
+++ b/salt/utils/timed_subprocess.py
@@ -1,8 +1,6 @@
-# -*- coding: utf-8 -*-
"""
For running command line executables with a timeout
"""
-from __future__ import absolute_import, print_function, unicode_literals
import shlex
import subprocess
@@ -10,10 +8,9 @@ import threading
import salt.exceptions
import salt.utils.data
-from salt.ext import six
-class TimedProc(object):
+class TimedProc:
"""
Create a TimedProc object, calls subprocess.Popen with passed args and **kwargs
"""
@@ -46,7 +43,7 @@ class TimedProc(object):
if self.timeout and not isinstance(self.timeout, (int, float)):
raise salt.exceptions.TimedProcTimeoutError(
- "Error: timeout {0} must be a number".format(self.timeout)
+ "Error: timeout {} must be a number".format(self.timeout)
)
if kwargs.get("shell", False):
args = salt.utils.data.decode(args, to_str=True)
@@ -59,28 +56,24 @@ class TimedProc(object):
try:
args = shlex.split(args)
except AttributeError:
- args = shlex.split(six.text_type(args))
+ args = shlex.split(str(args))
str_args = []
for arg in args:
- if not isinstance(arg, six.string_types):
- str_args.append(six.text_type(arg))
+ if not isinstance(arg, str):
+ str_args.append(str(arg))
else:
str_args.append(arg)
args = str_args
else:
- if not isinstance(args, (list, tuple, six.string_types)):
+ if not isinstance(args, (list, tuple, str)):
# Handle corner case where someone does a 'cmd.run 3'
- args = six.text_type(args)
+ args = str(args)
# Ensure that environment variables are strings
- for key, val in six.iteritems(kwargs.get("env", {})):
- if not isinstance(val, six.string_types):
- kwargs["env"][key] = six.text_type(val)
- if not isinstance(key, six.string_types):
- kwargs["env"][six.text_type(key)] = kwargs["env"].pop(key)
- if six.PY2 and "env" in kwargs:
- # Ensure no unicode in custom env dict, as it can cause
- # problems with subprocess.
- kwargs["env"] = salt.utils.data.encode_dict(kwargs["env"])
+ for key, val in kwargs.get("env", {}).items():
+ if not isinstance(val, str):
+ kwargs["env"][key] = str(val)
+ if not isinstance(key, str):
+ kwargs["env"][str(key)] = kwargs["env"].pop(key)
args = salt.utils.data.decode(args)
self.process = subprocess.Popen(args, **kwargs)
self.command = args
@@ -103,18 +96,18 @@ class TimedProc(object):
rt = threading.Thread(target=receive)
rt.start()
rt.join(self.timeout)
- if rt.isAlive():
+ if rt.is_alive():
# Subprocess cleanup (best effort)
self.process.kill()
def terminate():
- if rt.isAlive():
+ if rt.is_alive():
self.process.terminate()
threading.Timer(10, terminate).start()
raise salt.exceptions.TimedProcTimeoutError(
- "{0} : Timed out after {1} seconds".format(
- self.command, six.text_type(self.timeout),
+ "{} : Timed out after {} seconds".format(
+ self.command, str(self.timeout),
)
)
return self.process.returncode
--
2.32.0