From 44b4d4aa8c57dc05d4b997099dc767dd449bb296 Mon Sep 17 00:00:00 2001 From: Chris Hines <chris.hines@monash.edu> Date: Tue, 21 Feb 2023 16:57:03 +1100 Subject: [PATCH] I think I found the lock error --- tes/sshwrapper/__init__.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/tes/sshwrapper/__init__.py b/tes/sshwrapper/__init__.py index 45c3339..fe1ef94 100644 --- a/tes/sshwrapper/__init__.py +++ b/tes/sshwrapper/__init__.py @@ -98,8 +98,10 @@ class Ssh: @staticmethod def check_ctrlsocket(sess, ctrlsocket): cmd = ['ssh','-S',ctrlsocket,'-O','check','-l','noone','nohost'] - check_p = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=None) - (stderr,stdout) = check_p.communicate(timeout=Ssh.TIMEOUT) + try: + check_p = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE,stdin=None) + (stderr,stdout) = check_p.communicate(timeout=Ssh.TIMEOUT) + return check_p.returncode == 0 @staticmethod @@ -115,9 +117,14 @@ class Ssh: logger.debug("enter get_ctrl_master_socket") ctrlsocket = "/tmp/cm-{}-{}-{}".format(user,host,sess.sshsessid) sess.lock.acquire() - if Ssh.check_ctrlsocket(sess,ctrlsocket): + try: + if Ssh.check_ctrlsocket(sess,ctrlsocket): + sess.lock.release() + return ctrlsocket + except subprocess.TimeoutExpired as e: sess.lock.release() - return ctrlsocket + raise e + try: mode = os.stat(ctrlsocket).st_mode logger.debug('removing stale control socket') -- GitLab