那天的故障是凌晨十二点多爆出来的。
立夏已经躺下了,手机在床头充着电,突然连着震了三下,他摸过来看,是项目群里的消息,测试那边发现线上环境有个核心接口挂了,报错日志刷屏,影响范围不小。
他坐起来,被子蹬开,打开电脑。
群里已经乱了,测试在截图,运维在查服务器,产品那边也惊动了,发消息问影响了哪些功能。立夏把日志调出来,扫了一眼,定位到大概的位置,手指已经开始敲了。
十分钟后,林潮生进群,发了句:"我在,逐步排查,不要慌,各组报一下现在的状态。"
就这一句,群里的节奏稳了一点。
立夏没有抬头,继续看日志,把可能的问题点圈出来,准备一个一个地排。
林潮生私信他:"你定位到哪里了?"
立夏把初步判断发过去,林潮生回得很快:"我也觉得是这里,你先动,我协调其他人。"
就这么分工,不用多说,各做各的。
---
立夏把外套套上,坐在桌边,台灯开着,屏幕的光把他脸照得很白。楼上那对夫妻今晚没有动静,胡同里偶尔有猫叫一声,然后又安静了。
他一行一行地看日志,把问题的脉络顺出来,越顺越清楚,是一个数据处理的边界问题,低概率触发,但一旦触发就会把整个接口拖垮。
他把修复方案打出来,发给林潮生确认。
林潮生回:"方案没问题,但这里加一个降级处理,防止下次。"
立夏看了一眼,回:"行,我加。"
两个人就这么来来回回,一个在改代码,一个在协调各方,话都不多,但每句都在点子上,节省。
快三点的时候,立夏把修复的版本推上去,运维那边部署,测试开始回归,等待的时候,立夏靠着椅背,闭了一下眼睛,脖子有点酸。
林潮生私信过来:"辛苦了,等结果。"
立夏回:"还没完。"
"快了。"
就这两个字,立夏盯着"快了",没有回,把椅子转回去,继续盯着屏幕等测试的结果。
三点四十,测试回复,接口恢复正常,回归通过。
群里一阵"好了好了",有人发了个庆祝的表情,运维说要继续观察一个小时确认稳定,林潮生在群里说辛苦大家了,让大家去休息。
立夏把电脑关掉,站起来,伸了个懒腰,窗外天还黑着,他去倒了杯水,喝完,重新躺下,闭上眼睛。
手机又震了一下。
林潮生:"睡得着吗?"
立夏想了一下,回:"应该能。"
"明天来晚一点没关系,我跟组长说了。"
立夏没有回,把手机翻扣在床上,闭上眼睛。
来晚一点。
他把这三个字在心里放了一放,没有往下想,让自己慢慢沉下去,沉进困意里,睡过去了。
---
第二次故障是半个月之后的事,这次严重一些。
下午四点多爆出来的,不是线上,是预发布环境,但客户那边要第二天演示,预发布过不了,演示就泡汤,时间很紧。
整个项目组留下来,办公室的灯全亮着,外卖叫了两轮,盒子摞在垃圾桶旁边,没人去收。
立夏坐在工位上,把问题的范围一点点缩小,赵晗在旁边帮他查,两个人来回说着,声音压得很低,不打扰别人。林潮生在另一头的会议室,跟客户那边打电话,声音透过玻璃传出来,听不清说什么,就是知道他在说。
快八点的时候,赵晗撑不住了,趴在桌上,说:"我闭五分钟。"
立夏说:"去沙发上趴。"
赵晗说:"懒得动。"然后就这么趴着,没一会儿,呼吸就匀了。
立夏继续看代码,眼睛有点涩,他揉了揉,重新盯着屏幕。
九点多,林潮生从会议室出来,走过来,在赵晗旁边的空椅子上坐下,看了眼立夏的屏幕,问:"到哪里了?"
"快了。"立夏答,"就差这一块。"
"需要我做什么?"
"不用,"立夏回,"你去休息一下,等我这边好了通知你。"
林潮生没走,就坐在那里,把自己的电脑打开,处理别的事,两个人并排坐着,各自看着各自的屏幕,办公室里偶尔有人说话,键盘声稀稀拉拉的,暖气把屋子烘得有点干。
立夏把那块代码翻来覆去地看,看了很久,问题藏得深,不好找,他把思路从头捋了一遍,重新来,捋到一半,忽然看见了——
是个很隐蔽的逻辑漏洞,在一个很偏的分支里,低概率走进去,但一旦走进去就出不来。
他把修复方案打出来,在测试环境跑了一遍,过了。
他靠着椅背,长出了一口气。
"好了?"林潮生问。
"好了。"立夏回。
"我去通知运维部署。"
"嗯。"
林潮生站起来,去打电话,立夏把最后的文档整理了一下,发进群里,然后靠着椅背,把眼睛闭上,就闭一会儿,就一会儿。
屋子里的声音在他耳边,键盘声、说话声、暖气声,混在一起,他就这么闭着,不想睡,就是累了,让眼睛歇一下。
也不知道过了多久,他感觉到旁边有人坐下来了,然后,肩膀上多了一点重量。