From c9683a621d951b3fd2d14910892cd2423bb8a592 Mon Sep 17 00:00:00 2001 From: joknarf Date: Mon, 8 Jul 2024 20:45:18 +0200 Subject: [PATCH 1/3] interrupt uses printq --- ssh_para/ssh_para.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/ssh_para/ssh_para.py b/ssh_para/ssh_para.py index 57d6509..c9b75f0 100644 --- a/ssh_para/ssh_para.py +++ b/ssh_para/ssh_para.py @@ -369,18 +369,33 @@ def join(self, *args): def interrupt(self, jstatus): """sigint handler to log/print summary""" - self.abort_jobs() + if jstatus and jstatus.exit in [-2, 255]: jstatus.status = "KILLED" jstatus.exit = 256 - for jstatus in self.th_status: - if jstatus.status != "IDLE" and jstatus.exit == None: + while True: + try: + jstatus = printq.get(block=False) if jstatus.fdlog: + jstatus.log = last_line(jstatus.fdlog) jstatus.fdlog.close() - jstatus.status="KILLED" - jstatus.exit = 256 - self.nbfailed += 1 + if jstatus.exit in [-2, 255]: + jstatus.status = "KILLED" + jstatus.exit = 256 self.job_status.append(jstatus) + except queue.Empty: + break + + +# for jstatus in self.th_status: +# if jstatus.status != "IDLE" and jstatus.exit == None: +# if jstatus.fdlog: +# jstatus.fdlog.close() +# jstatus.status="KILLED" +# jstatus.exit = 256 +# self.nbfailed += 1 +# self.job_status.append(jstatus) + self.abort_jobs() try: curses.endwin() except curses.error: From 6436d7aee798eb716bfa3f4bf783297ddf8a4e08 Mon Sep 17 00:00:00 2001 From: joknarf Date: Mon, 8 Jul 2024 21:01:39 +0200 Subject: [PATCH 2/3] interrupt last_line --- ssh_para/ssh_para.py | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/ssh_para/ssh_para.py b/ssh_para/ssh_para.py index c9b75f0..ae15e70 100644 --- a/ssh_para/ssh_para.py +++ b/ssh_para/ssh_para.py @@ -376,25 +376,16 @@ def interrupt(self, jstatus): while True: try: jstatus = printq.get(block=False) - if jstatus.fdlog: - jstatus.log = last_line(jstatus.fdlog) - jstatus.fdlog.close() + if not jstatus.fdlog: + jstatus.fdlog = open(jstatus.logfile, "rb") + jstatus.log = last_line(jstatus.fdlog) + jstatus.fdlog.close() if jstatus.exit in [-2, 255]: jstatus.status = "KILLED" jstatus.exit = 256 self.job_status.append(jstatus) except queue.Empty: break - - -# for jstatus in self.th_status: -# if jstatus.status != "IDLE" and jstatus.exit == None: -# if jstatus.fdlog: -# jstatus.fdlog.close() -# jstatus.status="KILLED" -# jstatus.exit = 256 -# self.nbfailed += 1 -# self.job_status.append(jstatus) self.abort_jobs() try: curses.endwin() From 2aee27f0c7ed5efeed7d0b8cc77893056fc38b39 Mon Sep 17 00:00:00 2001 From: joknarf Date: Mon, 8 Jul 2024 21:09:11 +0200 Subject: [PATCH 3/3] windows killed ssh code 4294967295 --- ssh_para/ssh_para.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ssh_para/ssh_para.py b/ssh_para/ssh_para.py index ae15e70..0385748 100644 --- a/ssh_para/ssh_para.py +++ b/ssh_para/ssh_para.py @@ -370,7 +370,7 @@ def join(self, *args): def interrupt(self, jstatus): """sigint handler to log/print summary""" - if jstatus and jstatus.exit in [-2, 255]: + if jstatus and jstatus.exit in [-2, 255, 4294967295]: jstatus.status = "KILLED" jstatus.exit = 256 while True: @@ -380,7 +380,7 @@ def interrupt(self, jstatus): jstatus.fdlog = open(jstatus.logfile, "rb") jstatus.log = last_line(jstatus.fdlog) jstatus.fdlog.close() - if jstatus.exit in [-2, 255]: + if jstatus.exit in [-2, 255, 4294967295]: jstatus.status = "KILLED" jstatus.exit = 256 self.job_status.append(jstatus)