From bbffc9e2a5b17f82520ce333ccf9823806cbf4c2 Mon Sep 17 00:00:00 2001 From: Vlada Dusek Date: Wed, 18 Feb 2026 10:29:17 +0100 Subject: [PATCH] fix: Resolve LogRecord attribute conflict in event manager logging MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The `extra={'message': message}` in the exception handler overwrites Python's built-in `LogRecord.message` attribute, corrupting the log record and preventing caplog from capturing it (especially on 3.13+). Renamed to `raw_message` to avoid the collision. Also fixed `test_unknown_event_is_logged` which was missing an explicit `caplog.set_level(logging.INFO)` — the unknown event is logged at INFO level but caplog only captures WARNING+ by default. Co-Authored-By: Claude Opus 4.6 --- src/apify/events/_apify_event_manager.py | 2 +- tests/unit/events/test_apify_event_manager.py | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/apify/events/_apify_event_manager.py b/src/apify/events/_apify_event_manager.py index e947cb50..55e36829 100644 --- a/src/apify/events/_apify_event_manager.py +++ b/src/apify/events/_apify_event_manager.py @@ -133,7 +133,7 @@ async def _process_platform_messages(self, ws_url: str) -> None: await self._emit_persist_state_event_rec_task.stop() self.emit(event=Event.PERSIST_STATE, event_data=EventPersistStateData(is_migrating=True)) except Exception: - logger.exception('Cannot parse Actor event', extra={'message': message}) + logger.exception('Cannot parse Actor event', extra={'raw_message': message}) except Exception: logger.exception('Error in websocket connection') if self._connected_to_platform_websocket is not None: diff --git a/tests/unit/events/test_apify_event_manager.py b/tests/unit/events/test_apify_event_manager.py index 0954bed4..0dba68e7 100644 --- a/tests/unit/events/test_apify_event_manager.py +++ b/tests/unit/events/test_apify_event_manager.py @@ -264,6 +264,7 @@ def listener(data: Any) -> None: async def test_unknown_event_is_logged(monkeypatch: pytest.MonkeyPatch, caplog: pytest.LogCaptureFixture) -> None: """Test that unknown events are logged and not emitted.""" + caplog.set_level(logging.INFO, logger='apify') connected_ws_clients: set[websockets.asyncio.server.ServerConnection] = set() async def handler(websocket: websockets.asyncio.server.ServerConnection) -> None: