Repository navigation
Conversation
Since openclaw#1253 cancels the remaining detail fetches after the first failure, whether m2's request goes out before m1's error cancels it is a race, so the test's exact-2-calls assertion failed intermittently (74 of 1000 runs with -cpu=1). Count requests per message instead: m1, the failing one, exactly once (the no-retry check), and m2 at most once. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs real behavior proof before merge. What this changesThis PR replaces an exact total-request assertion with per-message counts in the Gmail detail-fetch test. Example: m1 returns HTTP 500 and cancellation prevents m2 from reaching the test server.
Review scores
ProductKind: Test only · Worth it: Yes · Fix scope: Complete Regression provenanceRegression provenance — verified: source commit Merge readiness⛔ Blocked before merge - 1 item remains Keep this PR open: current main still contains the scheduling-dependent assertion, and this focused change preserves the no-retry check while accommodating intentional cancellation. No actionable code defect was found. Priority: P3 Before merge
FindingsNone. Tests
Agent review detailsHow this fits togetherGmail message search fetches message details concurrently through the Google API client and cancels outstanding requests after its first error; this test exercises that helper against a local HTTP server. flowchart LR
A[Gmail message search] --> B[Concurrent detail fetcher]
B --> C[Google API client]
C --> D[Gmail API or test server]
D --> E[First request error]
E --> F[Cancel outstanding fetches]
F --> G[Return listing error]
Technical reviewBest possible solution: Land the focused per-message assertions while preserving production cancellation and the existing fan-out regression coverage. Do we have a high-confidence way to reproduce the issue? Yes: current-main cancellation can prevent m2 from reaching the server while the test requires both requests; the author's repeated-run results corroborate this path, and no target code was executed during review. Is this the best way to solve the issue? The patch is the smallest complete correction: count the failing message exactly once and permit the other message to be canceled, using the existing test server and atomic counters. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning medium; reviewed against f9052a583e87. Provenance checked
TestingProof path: in-process harness. SecurityNone. EvidenceWhat I checked:
Likely related people:
Review metrics
LabelsLabel changes:
Label justifications:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale6/6 🦀 challenger crab · 5/6 🦞 diamond lobster · 4/6 🐚 platinum hermit · 3/6 🦐 gold shrimp · 2/6 🦪 silver shellfish · 1/6 🧂 unranked krab. Overall follows the weaker of proof and patch quality; ✨ marks media proof (a screenshot, video, or linked artifact) that directly shows the changed behavior. WorkflowClawSweeper edits this one comment on every review. Comment Reviewed October 23, 2026, 2:26 AM ET / 06:26 UTC. |
|
Thanks for isolating the cancellation race and preserving the no-retry assertion. This is now superseded by #1249: commit a20b2e2 changed Current main (563e30a) includes that deterministic fixture and has green Linux, minimum-Go, Windows, and macOS CI. Closing as superseded; thank you for the focused fix and reproduction. |
Since #1253 cancels the remaining detail fetches after the first failure, this test races: whether m2's request goes out before m1's error cancels it depends on scheduling, while the test still expected exactly 2 calls. Observed in #1255's
testandminimum-gojobs.Local reproduction results using
go test ./internal/cmd/ -run 'TestFetchMessageDetails_NoRetryOnError$' -count=1000 -cpu=1:-cpu=2and-cpu=8)Changes
fetchMessageDetailsitself.Test-only; no behavior change, so no changelog entry.
🤖 Generated with Claude Code