被线程池记住的用户:一次线程上下文数据错乱事故复盘
一次看似只涉及 traceId 的异步改造,如何因为共享线程池与 InheritableThreadLocal 的组合,演变成跨请求的数据错乱。
2026年8月31日 14 分钟 阅读
关于工程实践、系统设计与开发过程中的判断记录。
6 条结果
一次看似只涉及 traceId 的异步改造,如何因为共享线程池与 InheritableThreadLocal 的组合,演变成跨请求的数据错乱。
一次 GKE dev 环境验收中的日志排障,从一条看似失真的 ERROR 开始,追到 Logback、标准输出流与 Cloud Logging 的边界。
一条 TooManyResultsException,牵出 MySQL 与 PostgreSQL 对大小写截然不同的判断,也揭开了藏在 Collation 里的迁移暗雷。
拆解 Angular 预渲染、Hydration 与 GitHub Pages 静态托管之间的边界,并给出一条可复现的发布路径。
用日志、指标与追踪串起一次请求,并从用户影响出发设计可行动的告警。
从内容契约、构建校验到标签检索,说明如何让 Markdown 仓库长期保持可发现与可演进。