From 721461298d1ec96678b876d74ea2186dde77b0be Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Mon, 10 Mar 2025 11:17:46 -0400 Subject: [PATCH] Avoid attr-err when `._ipc_msg==None` Seems this can happen in particular when we raise a `MessageTypeError` on the sender side of a `Context`, since there isn't any msg relayed from the other side (though i'm wondering if MTE should derive from RAE then considering this case?). Means `RemoteActorError.boxed_type = None` in such cases instead of raising an attr-error for the `None.boxed_type_str`. --- tractor/_exceptions.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/tractor/_exceptions.py b/tractor/_exceptions.py index 249ea164..92a07375 100644 --- a/tractor/_exceptions.py +++ b/tractor/_exceptions.py @@ -432,9 +432,13 @@ class RemoteActorError(Exception): Error type boxed by last actor IPC hop. ''' - if self._boxed_type is None: + if ( + self._boxed_type is None + and + (ipc_msg := self._ipc_msg) + ): self._boxed_type = get_err_type( - self._ipc_msg.boxed_type_str + ipc_msg.boxed_type_str ) return self._boxed_type @@ -1144,6 +1148,12 @@ def unpack_error( ''' if not isinstance(msg, Error): + # log.critical( + # f'Why a non-Error !?\n' + # f'{msg}\n' + # ) + # dun work without gb-portal! + # breakpoint() return None # try to lookup a suitable error type from the local runtime