go network_error ai_generated true

rpc error: code = Canceled desc = context canceled

ID: go/grpc-stream-canceled-by-client

Also available as: JSON · Markdown · 中文
80%Fix Rate
88%Confidence
0Evidence
2025-01-10First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
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

  1. 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)
  2. 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:

  1. 95% fail

    A canceled context stays canceled; the retry fails immediately.

  2. 70% fail

    Masks upstream cancellation and can leak goroutines / leave server resources allocated.