wjqserver
|
2d693e3b13
|
refactor: mergectx 简化结构,修复 Gemini 审查意见
- deadlineCtx 改为 cancelCtx 的子 context,建立父子层级关系
- 嵌入 cancelCtx/context.Context 直接提供 Done()/Err()/Deadline(),移除冗余方法
- orDone 中加入 cancelCtx,防止手动 cancel() 时 goroutine 泄漏
- 移除 cancelCtx/deadlineCtx/done/doneOnce 字段,struct 简化为 Context + parents
- 移除冗余 Cause() 方法(context.Cause 用 Value(&cancelCtxKey) 机制)
- 移除 Done()/Err() 显式实现,由嵌入 context 自动提供
Alina Agent生成
|
2026-04-22 09:27:53 +08:00 |
|
wjqserver
|
6006267d25
|
fix: Done() 使用 sync.Once 缓存 channel,避免重复创建 orDone goroutine
修复 Gemini 审查意见:多次调用 Done() 时不再重复创建 goroutine,
每个 mergedContext 最多产生 2 个 orDone goroutine。
Alina Agent生成
|
2026-04-22 09:00:01 +08:00 |
|
wjqserver
|
7487369125
|
improve: MergeCtx 支持 cause 传播, 使用 WithCancelCause/WithDeadlineCause
- 内部改用 context.WithCancelCause 和 WithDeadlineCause, 父 context 取消原因自动传播
- Value() 先检查嵌入 context 再查 parents, 确保 context.Cause() 正确工作
- Done()/Err() 同时监听 cancelCtx 和 deadlineCtx, 支持 deadline 到期 cause
- 新增 Cause() 便捷方法
- 单 parent 短路径改用 WithCancelCause 保留 cause
- 新增 mergectx_test.go, 覆盖 cause 传播、deadline、Value 查找等场景
- API 兼容: 返回类型保持 CancelFunc 不变
Alina Agent生成
|
2026-04-22 08:43:36 +08:00 |
|
wjqserver
|
d90d043811
|
fix: mergedContext.Value 遍历父 contexts 查找值
|
2026-03-30 02:21:11 +08:00 |
|
google-labs-jules[bot]
|
504089b748
|
feat: add MPL 2.0 license headers to all go files
|
2025-07-24 08:07:38 +00:00 |
|
wjqserver
|
49508b49c1
|
fix limitMaxSizeReader non use body close & fix mergeCtx Value
|
2025-07-09 00:17:52 +08:00 |
|
wjqserver
|
cb86cb935a
|
add maxBytesReader & ctxMerge
|
2025-07-08 13:26:18 +08:00 |
|