From bcc02656aa1c5350aa061831c4c9c491af82a289 Mon Sep 17 00:00:00 2001 From: Emir Muhammad Date: Fri, 29 May 2026 13:04:55 +0200 Subject: [PATCH] Make checks to ensure that optionals are well caught --- src/drunc/process_manager/process_manager.py | 5 ++++- src/drunc/process_manager/ssh_process_manager.py | 5 ++++- src/drunc/process_manager/utils.py | 8 ++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/drunc/process_manager/process_manager.py b/src/drunc/process_manager/process_manager.py index 483ae5abe..07afa8b86 100644 --- a/src/drunc/process_manager/process_manager.py +++ b/src/drunc/process_manager/process_manager.py @@ -233,7 +233,10 @@ def find_by_uuid(pi_list, target_uuid: str): ) continue pi = find_by_uuid(results, diff) - err_msg = f"Process {pi.process_description.metadata.name} has died with a return code {pi.return_code}" + pi_return_code = ( + pi.return_code if pi.HasField("return_code") else "NONE" + ) + err_msg = f"Process {pi.process_description.metadata.name} has died with a return code {pi_return_code}" if not self.ers_handler_initialized: setup_daq_ers_logger( self.log, diff --git a/src/drunc/process_manager/ssh_process_manager.py b/src/drunc/process_manager/ssh_process_manager.py index 835697f34..df7b16770 100644 --- a/src/drunc/process_manager/ssh_process_manager.py +++ b/src/drunc/process_manager/ssh_process_manager.py @@ -697,10 +697,13 @@ def _flush_impl(self, query: ProcessQuery) -> ProcessInstanceList: proc_uuid, self.configuration.data.kill_timeout ) + pi_return_code = ( + pi.return_code if pi.HasField("return_code") else "NONE" + ) self.log.info( f"Flushed dead process {proc_uuid} " f"(name: {pi.process_description.metadata.name}, " - f"exit code: {pi.return_code})." + f"exit code: {pi_return_code})." ) flushed.append(pi) diff --git a/src/drunc/process_manager/utils.py b/src/drunc/process_manager/utils.py index 254ceb307..859a74702 100644 --- a/src/drunc/process_manager/utils.py +++ b/src/drunc/process_manager/utils.py @@ -149,7 +149,11 @@ def tabulate_process_instance_list( else "[danger]False[/danger]" ) row = [m.session, line, m.user, m.hostname, process.uuid.uuid] - row += [alive, f"{process.return_code}"] + + process_return_code = ( + process.return_code if process.HasField("return_code") else "NONE" + ) + row += [alive, f"{process_return_code}"] if show_remote_pid: row += [ process.remote_pid @@ -322,6 +326,7 @@ def get_pm_type_from_name(pm_name: str) -> ProcessManagerTypes: return pmch.data.type + def format_hostname(hostname: str) -> str: """ Format the host name to truly reflect what the host name is, removing any extensions @@ -351,4 +356,3 @@ def format_hostname(hostname: str) -> str: formatted_hostname = hostname[:-2] return formatted_hostname -