From 0e11ff7e9d808a5afa1101c6a2b8fe0825cf0eea Mon Sep 17 00:00:00 2001 From: root Date: Thu, 7 May 2026 22:01:55 -0700 Subject: [PATCH] Guard hot-path log calls to avoid payload rendering when disabled Wrap `log.transport()` in `Channel.send()` and `log.runtime()` in `PldRx.decode_pld()` with `log.at_least_level()` checks so that expensive `pformat(payload)` / `repr(msg)` / `repr(pld)` calls are skipped entirely when the respective log level is not active. Previously the f-string arguments were eagerly evaluated before being passed to the log method, even though `StackLevelAdapter.log()` would then discard the message internally via its own `isEnabledFor()` check. On high-frequency IPC paths this caused `pformat` to dominate CPU usage (~60-70 %) as reported in #455. This also restores the full diagnostic output (msg type, decoded payload) that was temporarily commented out in 0373164 as a stopgap. Resolves #455 --- tractor/ipc/_chan.py | 10 ++++++---- tractor/msg/_ops.py | 18 +++++++++--------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/tractor/ipc/_chan.py b/tractor/ipc/_chan.py index 0bf254d7..0bae7e26 100644 --- a/tractor/ipc/_chan.py +++ b/tractor/ipc/_chan.py @@ -325,10 +325,12 @@ class Channel: ''' __tracebackhide__: bool = hide_tb try: - log.transport( - '=> send IPC msg\n\n' - # f'{pformat(payload)}\n' - ) + if log.at_least_level('transport'): + # don't materialize the payload repr if not necessary + log.transport( + '=> send IPC msg:\n\n' + f'{pformat(payload)}\n' + ) # assert self._transport # but why typing? await self._transport.send( payload, diff --git a/tractor/msg/_ops.py b/tractor/msg/_ops.py index fe5929f6..1b342ca6 100644 --- a/tractor/msg/_ops.py +++ b/tractor/msg/_ops.py @@ -306,15 +306,15 @@ class PldRx(Struct): ): try: pld: PayloadT = self._pld_dec.decode(pld) - log.runtime( - f'Decoded payload for\n' - # # f'\n' - # f'{msg}\n' - # # ^TODO?, ideally just render with `, - # # pld={decode}` in the `msg.pformat()`?? - # f'where, ' - # f'{type(msg).__name__}.pld={pld!r}\n' - ) + if log.at_least_level('runtime'): + # don't materialize the payload repr if not necessary + log.runtime( + f'Decoded payload for\n' + f'\n' + f'{msg}\n' + f'where, ' + f'{type(msg).__name__}.pld={pld!r}\n' + ) return pld except TypeError as typerr: __tracebackhide__: bool = False