Use `Context` repr APIs for RPC outcome logs

Delegate to the new `.repr_state: str` and adjust log level based on
error vs. cancel vs. result.
runtime_to_msgspec
Tyler Goodlet 2024-05-31 14:40:55 -04:00
parent 4a270f85ca
commit 21f633a900
1 changed files with 13 additions and 26 deletions

View File

@ -739,37 +739,24 @@ async def _invoke(
cid, cid,
)) ))
logmeth: Callable = log.runtime
merr: Exception|None = ctx.maybe_error merr: Exception|None = ctx.maybe_error
( descr_str: str = 'with final result `{repr(ctx.outcome)}`'
res_type_str,
res_str,
) = (
('error', f'{type(merr)}',) if merr
else (
'result',
f'`{repr(ctx.outcome)}`',
)
)
message: str = ( message: str = (
f'IPC context terminated with a final {res_type_str}\n\n' f'IPC context terminated {descr_str}\n\n'
f'{ctx}'
) )
if merr: if merr:
from tractor import RemoteActorError descr_str: str = (
if not isinstance(merr, RemoteActorError): f'with ctx having {ctx.repr_state!r}\n'
fmt_merr: str = ( f'{ctx.repr_outcome()}\n'
f'\n{merr!r}\n'
# f'{merr.args[0]!r}\n'
) )
if isinstance(merr, ContextCancelled):
logmeth: Callable = log.runtime
else: else:
fmt_merr = f'\n{merr!r}' logmeth: Callable = log.error
log.error( message += f'\n{merr!r}\n'
message
+ logmeth(message)
fmt_merr
)
else:
log.runtime(message)
async def try_ship_error_to_remote( async def try_ship_error_to_remote(