go
network_error
ai_generated
true
rpc error: code = Canceled desc = context canceled
ID: go/grpc-stream-canceled-by-client
80%Fix Rate
88%Confidence
0Evidence
2025-01-10First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 1.40+ | active | — | — | — |
Root Cause
The caller's context was canceled (client timeout, user request abort, or upstream context propagation) before the RPC returned.
generic中文
在 RPC 返回前,调用方的上下文被取消(客户端超时、用户请求中止或上游上下文传播)。
Workarounds
-
85% success
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% success
On the server, honor ctx.Done() and clean up resources: <-ctx.Done() // release DB conn, cancel downstream calls
Dead Ends
Common approaches that don't work:
-
95% fail
A canceled context stays canceled; the retry fails immediately.
-
70% fail
Masks upstream cancellation and can leak goroutines / leave server resources allocated.