第14章 只是一场梦(2/2)
陆行回过神,抬手揉了揉眉心。
“……没事。”
他声音有点哑。
“把你电脑转过来,我看看。”
周明立刻像抓住救命稻草一样,把椅子往旁边一让。
“在这儿!”
“这个接口返回的数据不稳定,有时候是空,有时候又有值。”
“然后页面那边就偶发性崩。”
“测试说復现不了,但產品说用户已经反馈好几次了。”
陆行站起身。
刚一起身,他膝盖还微微僵了一下,发出了清脆的响声。
这身体……
果然是被岁月摧残过的版本啊。
他抓了抓头髮,走到周明旁边坐下。
屏幕上开著ide,旁边还有一堆日誌窗口。
陆行看著那段代码,混乱的思绪渐渐被强行拉回现实。
他快速扫了一遍调用链。
“你这里是先查缓存?”
周明赶紧点头。
“对。”
“缓存没有再查资料库,然后重新写回缓存。”
陆行指了指其中一段。
“那你有没有想过,缓存里存的不是没有数据,而是存了一个空结果?”
周明一愣。
“啊?”
陆行滑动滑鼠,拉到下面。
“你看这里。”
“你为了防止缓存穿透,在查不到数据的时候,把空对象也写进缓存了。”
“这思路没错,但问题是,你这里拼写出错了。”
周明凑近看了一眼,然后整个人僵住。
陆行继续道:
“正常查询用的是……”
“你写空缓存的时候,用的是……”
“总之,多了个『s』。”
周明:“……”
办公室里沉默了两秒。
周明的表情从崩溃变成迷茫,又从迷茫变成震惊。
最后变成想当场埋了自己的羞耻。
“我靠。”
他捂住脸。
“就这?”
陆行面无表情。
“很多线上事故,都是从『就这』开始的。”
周明痛苦道:
“可为什么测试环境没问题?”
陆行点开配置文件。
“测试环境缓存过期时间只有一分钟。”
“预发环境为了模擬线上,设成了两小时。”
“你测试的时候刚好没碰上,预发那边只要写入了错误key,后面就出现不稳定。”
周明恍然大悟。
“所以不是接口不稳定,是我写进去的空缓存让逻辑分叉了?”
“差不多。”
陆行把键盘推给他。
“改key,然后补一条单元测试。”
“顺便把缓存key常量抽出来,不要到处手写字符串。”
周明连连点头。
“明白明白!”
他手忙脚乱地开始改。
陆行站在旁边看了一会儿,又补充道:
“还有这里……”
周明一边改一边点头。
“懂了。”
陆行看著他敲代码,语气放缓了一些。
“排bug的时候別光看表面。”
“日誌不是让你盯著发呆的,是让你顺著链路往回找。”
周明苦著脸。
“组长,我也想顺著链路找。”
“但我一看到报错就脑子空白。”
陆行看了他一眼。
“那就先別慌唄。”
“bug又不会因为你慌就自己修好。”
周明沉默两秒。
然后小声道:
“嘿嘿,但它会因为你来就修好。”
陆行:“……”
这话听著好像是在夸他。
但为什么莫名有种压榨组长的味道?