go
network_error
ai_generated
true
rpc 错误:代码 = Canceled,描述 = 上下文已取消
rpc error: code = Canceled desc = context canceled
ID: go/grpc-stream-canceled-by-client
80%修复率
88%置信度
0证据数
2025-01-10首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 1.40+ | active | — | — | — |
根因分析
在 RPC 返回前,调用方的上下文被取消(客户端超时、用户请求中止或上游上下文传播)。
English
The caller's context was canceled (client timeout, user request abort, or upstream context propagation) before the RPC returned.
解决方案
-
85% 成功率
Create a fresh context for retries with a bounded deadline: retryCtx, cancel := context.WithTimeout(context.Background(), 2*time.Second) defer cancel() resp, err := client.Do(retryCtx, req)
-
90% 成功率
On the server, honor ctx.Done() and clean up resources: <-ctx.Done() // release DB conn, cancel downstream calls
无效尝试
常见但无效的做法:
-
95% 失败
A canceled context stays canceled; the retry fails immediately.
-
70% 失败
Masks upstream cancellation and can leak goroutines / leave server resources allocated.