Skip to content

Commit 4437ba9

Browse files
committed
Do not share subprocess lock between instances
Signed-off-by: Aleksei Stepanov <penguinolog@gmail.com> (cherry picked from commit 82da78d) Signed-off-by: Aleksei Stepanov <penguinolog@gmail.com>
1 parent 76f5aab commit 4437ba9

File tree

4 files changed

+19
-106
lines changed

4 files changed

+19
-106
lines changed

doc/source/Subprocess.rst

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ API: Subprocess
1818
:type logger: logging.Logger
1919

2020
.. versionchanged:: 1.2.0 log_mask_re regex rule for masking cmd
21-
.. versionchanged:: 2.9.0 Not singleton anymore. Only lock is shared between all instances.
22-
.. versionchanged:: 2.9.3 Logger can be enforced.
23-
.. versionchanged:: 2.12.0 support chroot
21+
.. versionchanged:: 3.1.0 Not singleton anymore. Only lock is shared between all instances.
22+
.. versionchanged:: 3.2.0 Logger can be enforced.
23+
.. versionchanged:: 4.1.0 support chroot
24+
.. versionchanged:: 4.3.0 Lock is not shared anymore: allow parallel call of different instances
2425

2526
.. py:attribute:: log_mask_re
2627
@@ -54,7 +55,7 @@ API: Subprocess
5455
:rtype: typing.ContextManager
5556

5657
.. Note:: Enter and exit main context manager is produced as well.
57-
.. versionadded:: 2.12.0
58+
.. versionadded:: 4.1.0
5859

5960
.. py:method:: execute_async(command, stdin=None, open_stdout=True, open_stderr=True, verbose=False, log_mask_re=None, *, chroot_path=None, cwd=None, env=None, **kwargs)
6061
@@ -84,7 +85,7 @@ API: Subprocess
8485

8586
.. versionadded:: 1.2.0
8687
.. versionchanged:: 2.1.0 Use typed NamedTuple as result
87-
.. versionchanged:: 2.9.3 Expose cwd and env as optional keyword-only arguments
88+
.. versionchanged:: 3.2.0 Expose cwd and env as optional keyword-only arguments
8889

8990
.. py:method:: execute(command, verbose=False, timeout=1*60*60, *, log_mask_re=None, stdin=None, **kwargs)
9091
@@ -129,7 +130,7 @@ API: Subprocess
129130
:raises ExecHelperTimeoutError: Timeout exceeded
130131

131132
.. note:: stdin channel is closed after the input processing
132-
.. versionadded:: 2.9.4
133+
.. versionadded:: 3.3.0
133134

134135
.. py:method:: check_call(command, verbose=False, timeout=1*60*60, error_info=None, expected=(0,), raise_on_err=True, *, log_mask_re=None, stdin=None, exception_class=CalledProcessError, **kwargs)
135136
@@ -160,8 +161,8 @@ API: Subprocess
160161

161162
.. versionchanged:: 1.1.0 make method
162163
.. versionchanged:: 1.2.0 default timeout 1 hour
163-
.. versionchanged:: 2.9.3 Exception class can be substituted
164-
.. versionchanged:: 2.11.0 Expected is not optional, defaults os dependent
164+
.. versionchanged:: 3.2.0 Exception class can be substituted
165+
.. versionchanged:: 3.4.0 Expected is not optional, defaults os dependent
165166

166167
.. py:method:: check_stderr(command, verbose=False, timeout=1*60*60, error_info=None, raise_on_err=True, *, expected=(0,), log_mask_re=None, stdin=None, exception_class=CalledProcessError, **kwargs)
167168
@@ -192,8 +193,8 @@ API: Subprocess
192193

193194
.. versionchanged:: 1.1.0 make method
194195
.. versionchanged:: 1.2.0 default timeout 1 hour
195-
.. versionchanged:: 2.9.3 Exception class can be substituted
196-
.. versionchanged:: 2.11.0 Expected is not optional, defaults os dependent
196+
.. versionchanged:: 3.2.0 Exception class can be substituted
197+
.. versionchanged:: 3.4.0 Expected is not optional, defaults os dependent
197198

198199

199200
.. py:class:: SubprocessExecuteAsyncResult
@@ -220,4 +221,4 @@ API: Subprocess
220221
221222
``datetime.datetime``
222223

223-
.. versionadded:: 2.11.0
224+
.. versionadded:: 3.4.1

exec_helpers/metaclasses.py

Lines changed: 0 additions & 88 deletions
This file was deleted.

exec_helpers/subprocess_runner.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
from exec_helpers import api
3636
from exec_helpers import exceptions
3737
from exec_helpers import exec_result
38-
from exec_helpers import metaclasses # pylint: disable=unused-import
3938

4039

4140
# noinspection PyTypeHints
@@ -63,7 +62,7 @@ def stdout(self) -> typing.Optional[typing.IO]: # type: ignore
6362
return super(SubprocessExecuteAsyncResult, self).stdout
6463

6564

66-
class Subprocess(api.ExecHelper, metaclass=metaclasses.SingleLock):
65+
class Subprocess(api.ExecHelper):
6766
"""Subprocess helper with timeouts and lock-free FIFO."""
6867

6968
def __init__(
@@ -83,8 +82,10 @@ def __init__(
8382
:type logger: logging.Logger
8483
8584
.. versionchanged:: 1.2.0 log_mask_re regex rule for masking cmd
86-
.. versionchanged:: 2.9.3 Not singleton anymore. Only lock is shared between all instances.
87-
.. versionchanged:: 2.9.3 Logger can be enforced.
85+
.. versionchanged:: 3.1.0 Not singleton anymore. Only lock is shared between all instances.
86+
.. versionchanged:: 3.2.0 Logger can be enforced.
87+
.. versionchanged:: 4.1.0 support chroot
88+
.. versionchanged:: 4.3.0 Lock is not shared anymore: allow parallel call of different instances.
8889
"""
8990
super(Subprocess, self).__init__(logger=logger, log_mask_re=log_mask_re)
9091

@@ -238,8 +239,8 @@ def execute_async( # pylint: disable=arguments-differ
238239
239240
.. versionadded:: 1.2.0
240241
.. versionchanged:: 2.1.0 Use typed NamedTuple as result
241-
.. versionchanged:: 2.9.3 Expose cwd and env as optional keyword-only arguments
242-
.. versionchanged:: 2.12.0 support chroot
242+
.. versionchanged:: 3.2.0 Expose cwd and env as optional keyword-only arguments
243+
.. versionchanged:: 3.5.3 support chroot
243244
"""
244245
cmd_for_log = self._mask_command(cmd=command, log_mask_re=log_mask_re) # type: str
245246

setup.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ def _extension(modpath):
6464
_extension("exec_helpers.constants"),
6565
_extension("exec_helpers.exceptions"),
6666
_extension("exec_helpers.exec_result"),
67-
_extension("exec_helpers.metaclasses"),
6867
_extension("exec_helpers.proc_enums"),
6968
_extension("exec_helpers.ssh_auth"),
7069
_extension("exec_helpers.ssh_client"),

0 commit comments

Comments
 (0)