Skip to content

Commit 02640e6

Browse files
Fix non-JSON logging in sockets.py and state.py
- Fix literal string '{event}' in error logs (sockets.py lines 145, 163) The string was not an f-string, so {event} was logged literally instead of the actual event data. Changed to use proper logging format args. - Fix model_dump() returning non-JSON-serializable objects (state.py) The model_dump() method returns Python objects like UUID and enums that appear as repr strings in logs (e.g., UUID('...'), <Enum.VALUE>). Changed to use model_dump(mode='json') wrapped in json.dumps() for proper JSON-serializable output. Co-authored-by: openhands <openhands@all-hands.dev>
1 parent d3e5512 commit 02640e6

File tree

2 files changed

+12
-6
lines changed
  • openhands-agent-server/openhands/agent_server
  • openhands-sdk/openhands/sdk/conversation

2 files changed

+12
-6
lines changed

openhands-agent-server/openhands/agent_server/sockets.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,9 @@ async def _send_event(event: Event, websocket: WebSocket):
142142
dumped = event.model_dump(mode="json")
143143
await websocket.send_json(dumped)
144144
except Exception:
145-
logger.exception("error_sending_event:{event}", stack_info=True)
145+
logger.exception(
146+
"error_sending_event: %s", getattr(event, "id", str(event)), stack_info=True
147+
)
146148

147149

148150
@dataclass
@@ -160,7 +162,11 @@ async def _send_bash_event(event: BashEventBase, websocket: WebSocket):
160162
dumped = event.model_dump(mode="json")
161163
await websocket.send_json(dumped)
162164
except Exception:
163-
logger.exception("error_sending_event:{event}", stack_info=True)
165+
logger.exception(
166+
"error_sending_bash_event: %s",
167+
getattr(event, "id", str(event)),
168+
stack_info=True,
169+
)
164170

165171

166172
@dataclass

openhands-sdk/openhands/sdk/conversation/state.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -251,8 +251,8 @@ def create(
251251

252252
logger.info(
253253
f"Resumed conversation {state.id} from persistent storage.\n"
254-
f"State: {state.model_dump(exclude={'agent'})}\n"
255-
f"Agent: {state.agent.model_dump_succint()}"
254+
f"State: {json.dumps(state.model_dump(exclude={'agent'}, mode='json'))}\n"
255+
f"Agent: {json.dumps(state.agent.model_dump_succint())}"
256256
)
257257
return state
258258

@@ -278,8 +278,8 @@ def create(
278278
state._autosave_enabled = True
279279
logger.info(
280280
f"Created new conversation {state.id}\n"
281-
f"State: {state.model_dump(exclude={'agent'})}\n"
282-
f"Agent: {state.agent.model_dump_succint()}"
281+
f"State: {json.dumps(state.model_dump(exclude={'agent'}, mode='json'))}\n"
282+
f"Agent: {json.dumps(state.agent.model_dump_succint())}"
283283
)
284284
return state
285285

0 commit comments

Comments
 (0)