go network_error ai_generated true

rpc 错误:代码 = Canceled,描述 = 上下文已取消

rpc error: code = Canceled desc = context canceled

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

其他格式: JSON · Markdown 中文 · English
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.

generic

解决方案

  1. 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)
  2. 90% 成功率
    On the server, honor ctx.Done() and clean up resources:
    <-ctx.Done()
    // release DB conn, cancel downstream calls

无效尝试

常见但无效的做法:

  1. 95% 失败

    A canceled context stays canceled; the retry fails immediately.

  2. 70% 失败

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