复现不了的 bug 最消耗人,因为你连敌人是谁都不知道。我抬起头看了看周围,大家都一样。我发现是并发导致的,单线程下它一直是好的。幸好之前留了备份

问题居然复现不了了,这比复现出来更可怕。我想反驳,但发现他说得对。我发现是缓存的问题,清掉之后一切都正常了。第二天这个方案就变成了团队标准做法

我把日志加满了,问题反而不出现了。我重新看了一遍手上的计划,把风险项标了出来。我发现这个问题只在周一早上出现,后来知道是定时任务。复盘会上我们把它列成了案例

我盯了半天,最后发现是拼写和大小写。我先给自己泡了杯茶,做好了打持久战的准备。我加了个 try-catch,先把异常吞掉,回头再查根因。好在最后有惊无险

调试到后面会发现,最大的敌人是自己的假设。我笑了笑,决定不解释。我发现这个接口在特定参数组合下返回了空对象。果然现实比段子更精彩

这个报错信息指向的位置和真正的错误隔了三层。我在心里把这个 bug 的可能性列了五条,第一条就对了。感动,然后我学到了新的一课

我盯了半天,最后发现是拼写和大小写。我重新看了一遍手上的计划,把风险项标了出来。我发现这个接口在特定参数组合下返回了空对象。办公室安静得能听见键盘声

线上日志里出现了从未见过的堆栈,时间戳还是三个月前的。我把整条链路在心里复盘了一遍。我在心里默默记下这个坑,写进了自己的检查清单。好在最后有惊无险

我把日志加满了,问题反而不出现了。我重新看了一遍手上的计划,把风险项标了出来。我发现是并发导致的,单线程下它一直是好的。那一刻我觉得自己还是很专业的

这个错误在生产环境是必现的,在测试环境是玄学。我盯着那段代码看了二十分钟,最后发现是我自己三天前改的。办公室安静得能听见键盘声