fix(adk): avoid cancel context races in concurrent ChatModelAgent runs - #1185
fix(adk): avoid cancel context races in concurrent ChatModelAgent runs#1185LPX-E5BD8 wants to merge 2 commits into
Conversation
There was a problem hiding this comment.
Pull request overview
This PR fixes a data race when a long-lived ChatModelAgent is used concurrently on the tools/ReAct execution path by ensuring per-run cancellation state is written to a per-run config copy rather than mutating a shared reactConfig / modelWrapperConf.
Changes:
- Copy
reactConfig(andmodelWrapperConfwhen present) inside eachRunclosure before injectingcancelCtx, avoiding shared mutable state across concurrent runs. - Apply the same per-run config copy approach to both message-based and agentic ReAct run functions.
- Add a concurrent regression test that exercises concurrent
Runcalls on a shared agent with tools enabled.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
adk/chatmodel.go |
Avoids concurrent mutation of shared ReAct config by shallow-copying configs per run before setting cancel state. |
adk/chatmodel_concurrent_test.go |
Adds a concurrency regression test covering shared-agent concurrent runs on the tools/ReAct path. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
Still ready for review. Concurrent |
|
Still sitting here if anyone has a chance to look. Concurrent |
Fixes #1177
concurrent Run on one ChatModelAgent races on reactConfig.cancelCtx.
copy the config per run before writing cancelCtx.