下一章 上一章 目录 设置
4、突发bug ...
-
陆承骁被苏屿这话怼得愣了愣,指尖下意识摸了摸眼角,脸上依旧没什么表情,语气却软了半截:“没睡多久,三点多躺了会儿。”
“那合着才睡四个来小时?”苏屿皱着眉,语气里带着点不自觉的较真,“技术再牛也不能这么往死里熬啊,身体是革命的本钱,真扛不住垮了,项目谁来扛?”
“而且再说了,你这么熬让那些关心的人怎么办?”
这话脱口而出,带着股北方人特有的实在劲儿,说完苏屿自己都愣了下——他跟陆承骁才认识三天,这么絮叨人家的身体,好像有点太熟络了。
好在陆承骁没往心里去,只是关掉了正在敲的代码文件,起身道:“我父母去世,没有人。”
“走,去看看测试情况。”
苏屿僵了一下,抬头看着他,心里有种说不出来的滋味。
两人走到小李工位前,苏屿已经把登录模块的功能翻来覆去试了好几遍:注册、登录、密码找回、账号绑定,整套流程走下来顺顺当当,没出现任何卡顿或报错。
“没问题,稳定性和流畅度都达标了,完全能支撑后续开发。”苏屿回头看向陆承骁,眼里带着点小得意,“看来咱们这磨合是越来越顺了。”
陆承骁扫了眼屏幕上的测试日志,嘴角几不可察地扬了下,没说话,却对着小李吩咐:“把加密算法的测试报告整理出来,下午同步给产品部存档。”
说完又转向苏屿,“接口文档中午前必须发我邮箱,别卡着点,提前半小时核对好。”
“放心,绝对准时!”苏屿拍着胸脯保证,心里却有种莫名的心酸——这位陆总监,还是老样子,嘴硬得很,夸人都不会好好说。
回到产品部,苏屿立刻投入到接口文档的最终核对中。
他做事向来细致,每个接口的参数格式、返回值说明、异常处理方案都逐字逐句过,连示例代码都重新跑了一遍,确保没有任何纰漏。
不知不觉就到了十一点半,苏屿把文档压缩打包,准时发给了陆承骁,顺带在项目群里喊了句:“接口文档已发陆总监邮箱,技术部的兄弟们辛苦啦,中午我请大家喝奶茶,想喝什么直接私我!”
群里瞬间热闹起来,技术部的同事们纷纷冒泡报单,连平时潜水的陆承骁都破天荒地回了个“收到”。
苏屿笑着下单,心里盘算着,偶尔搞点小福利,既能拉近团队距离,又能提高大家的积极性,何乐而不为?
刚放下手机,苏屿的工位电话就响了,是小李打来的,语气急得都快带颤音:“苏经理,不好了!出大事了!数据同步模块跟登录模块对接的时候,老是出现数据丢失的情况,有时候甚至直接同步失败,我们查了快一个小时了,压根找不到问题在哪儿!”
苏屿心里“咯噔”一下,瞬间沉了下去:“别急,你慢慢说,具体是什么表现?是所有用户都这样,还是个别情况?”
“都这样!”小李的声音透着股绝望,“不管用哪个测试账号登录,同步之前保存的数据,总能少个三条五条的,日志里显示同步成功了,但数据库里就是查不到。”
“陆总监已经亲自上手查了,脸色难看着呢,你赶紧过来一趟吧!”
“好,我马上到!”苏屿挂了电话,抓起笔记本就往27层冲。
技术部的氛围这会儿已经紧张得快凝固了,每个人都埋着头敲键盘,眉头拧成疙瘩,连呼吸都放轻了。
小李和几个核心开发围着一台电脑,脸色煞白,陆承骁站在最前面,背对着门口,身形挺得笔直,周身散发着低气压,连空气都仿佛冻住了。
“陆总监,情况怎么样?”苏屿快步走过去。
陆承骁缓缓转过身,眼底带着红血丝,脸色确实难看,语气也透着股压抑的火气:“数据同步接口存在漏洞,用户登录后同步历史数据时,高频出现数据丢失,目前原因不明。”
他指了指屏幕上的日志,“你看,同步请求显示成功,返回码200,但数据库对应的字段就是空的,像是被什么东西吞掉了一样。”
苏屿凑过去盯着屏幕,手指快速滑动日志记录,眉头越皱越紧:“接口参数我都是按标准写的,字段映射也没问题,怎么会出现这种情况?”
他又翻出自己的接口文档,逐行对照,“你看,这里的同步策略是增量同步,只传输变更数据,逻辑上没毛病啊。”
“逻辑没毛病,但实际运行出了问题,就是有漏洞。”陆承骁的语气有点冲,显然是被这个突如其来的bug搞得心烦,“我们排查了代码逻辑、数据库连接、网络传输,都没找到问题,现在怀疑是接口设计本身有缺陷。”
熙熙攘攘的议论声,嘈杂不安。
苏屿没反驳,他知道现在不是争论的时候。他深吸一口气,强迫自己冷静下来:“会不会是并发场景没考虑到?”他突然想起之前做设计时遇到的类似问题。”
“如果多个用户同时触发同步请求,或者同一个用户在不同设备上同时登录同步,会不会出现资源竞争,导致数据写入冲突,进而丢失?”
陆承骁眼睛一亮,像是被点醒了:“有这个可能!之前只测试了单个用户的同步场景,没做并发压力测试,很可能是这个漏洞!”他立刻转向小李,“马上搭建并发测试环境,模拟100个用户同时同步数据,看看能不能复现这个问题!”
“好嘞!”小李像是抓住了救命稻草,立刻招呼同事忙活起来。
苏屿也没闲着,他打开自己的笔记本,开始修改接口文档,补充并发控制的相关要求。
“我在接口里加上乐观锁机制,给每个数据条目加个版本号,同步的时候先校验版本号,避免覆盖冲突。另外,再增加数据校验步骤,同步完成后比对数据量,不匹配就自动重试。”
陆承骁站在旁边看着他敲击键盘的样子,苏屿的眉头微蹙,眼神专注而坚定,手指在键盘上翻飞,动作干脆利落,完全没有了平时的温和,多了股雷厉风行的劲儿。
他心里莫名一动,之前对苏屿的那点偏见,似乎又淡了些——这个产品经理,不仅细心,还能在关键时刻保持冷静,提出切实可行的解决方案,确实不简单。
人都是善变的,偏见也是可以打破的。
“乐观锁可以,但还要加个超时重试机制,避免死锁。”陆承骁忍不住开口提醒。
“另外,数据校验的频率别太高,不然会影响同步速度。”
他承认,他与他的偏见开始被打破了。
“我正想加呢!”苏屿抬头冲他笑了笑,眼里闪着光,“超时时间设为3秒怎么样?重试次数最多3次,再失败就返回异常提示,让用户手动重试。”
“可以。”陆承骁点了点头,语气缓和了不少,“我让技术部同步修改代码,按你这个方案来。”
不再是各执一词。
两人分工合作,苏屿修改接口文档,陆承骁指导小李他们调整代码、搭建测试环境。
不知不觉就到了下班时间,其他部门的同事都走光了,技术部依旧灯火通明,没人有心思下班——这个bug不解决,后续的开发根本没法推进,三个月的期限本来就紧,现在又出这么个岔子,每个人都压力山大。
苏屿看大家都饿得没心思干活,出去买了两箱面包、几瓶矿泉水和一些水果,分给大家:“先垫垫肚子,吃饱了才有力气找bug!今天咱们必须把这事儿搞定,不能让它耽误项目进度!”
陆承骁接过苏屿递过来的面包,说了声“谢谢”。
他今天光顾着查bug,连午饭都忘了吃,这会儿肚子早就饿得咕咕叫了。
两人就着矿泉水啃面包,偶尔交流两句解决方案,气氛比上午缓和了不少,没有了之前的剑拔弩张。
“你说会不会还有别的问题?比如数据库索引?”苏屿一边啃面包一边琢磨。
“之前为了提高查询速度,给同步表加了联合索引,会不会是索引顺序不合理,导致并发写入时出现死锁?”
陆承骁动作机不可察的一顿,眼睛瞬间亮了:“有道理!我怎么没想到这个!”
他立刻放下面包,快步走到电脑前,登录数据库查看同步表的索引设计。
“果然!联合索引的顺序搞反了,应该把高频查询字段放在前面,现在这样,并发写入时很容易触发死锁,导致数据写入失败!”
“那赶紧调整索引顺序!”苏屿也跟着凑过去,“再加上乐观锁和超时重试,三重保障,应该就能解决问题了!”
小李他们立刻行动起来,调整数据库索引、修改代码、部署测试环境。苏屿在旁边帮忙写测试用例,模拟各种并发场景,随时反馈测试结果。
时间一点点过去,窗外的天色越来越暗,城市的霓虹灯次第亮起,映照在办公室的玻璃上,勾勒出一片忙碌的剪影。
晚上十点多,小李终于激动地喊了起来:“成了!修改完成了!咱们来测试一下!”
所有人都围了过去,苏屿亲自上手,登录了十个测试账号,同时触发数据同步请求。
屏幕上的同步进度条快速推进,一个个“同步成功”的提示弹了出来。他又登录数据库,逐一核对数据,每个账号的同步数据都完整无缺,没有出现任何丢失的情况。
“成功了!真的成功了!”苏屿激动地拍了下手,悬着的心终于落了地。
熙熙攘攘的议论声,也变成叹为观止。
技术部的同事们也都松了口气,脸上露出了疲惫却欣慰的笑容,有人甚至欢呼一片。
陆承骁紧绷的嘴角也终于舒展开,眼底的红血丝依旧明显,但眼里多了些成就感:“大家辛苦了,今天就到这儿吧,剩下的工作明天再做,都早点回去休息。”
不再是他一个人,而是和他并肩。
“好嘞!”大家纷纷收拾东西,脚步都轻快了不少。
苏屿也拿起自己的笔记本,走到陆承骁身边,语气里带着点雀跃:“陆总监,今天谢谢你了,要不是你提醒超时重试,我还没想到这么周全。”
“互相配合而已。”
陆承骁收拾着桌上的东西,语气平淡,却没了之前的冷淡,“你也很厉害,能快速定位到并发和索引的问题,换了别人,可能还得耗更久。”
这是陆承骁第一次这么直白地夸他,苏屿心里有点小窃喜,挠了挠头笑了:“以后还得请陆总监多指教,我在技术这块儿,还是得靠你把关。”
陆承骁对他有了一点点欣赏。
“彼此彼此。”
陆承骁拿起外套,“走吧,一起下去。”
两人并肩走出技术部,电梯里只有他们两个人,安静得能听见彼此的呼吸声。
苏屿看着电梯壁上两人的倒影,发现陆承骁的侧脸其实挺好看的,轮廓分明,鼻梁高挺,就是平时太严肃,让人不敢轻易靠近。
“你住哪儿?”陆承骁突然开口打破了沉默。
“我住城南那边,靠近地铁口,交通挺方便的。”苏屿答道。
“你呢?陆总监。”
“我住城北。”陆承骁顿了顿,“方向相反,楼下分岔路各自走?”
“行。”苏屿点了点头。
城南城北,远而反之。
走出公司大楼,晚风习习,吹在脸上带着点凉意,刚好吹散了熬夜的疲惫。
两人并肩走在人行道上,路灯把他们的影子拉得很长,一前一后,偶尔重叠。
“今天这bug,真是吓出我一身冷汗。”苏屿感慨了一句,“要是没解决,咱们的排期就得往后拖,三个月的期限可就悬了。”
“问题总会解决的。”陆承骁的声音在夜色里显得格外低沉,“只要方向对了,愿意一起想办法,就没有跨不过去的坎。”
苏屿侧头看了他一眼,路灯的光晕落在他脸上,柔和了他冷硬的轮廓,居然显得有些温柔。
“你说得对。”苏屿笑了笑,“跟你合作,还挺踏实的。”
陆承骁脚步顿了顿,没回头,只是轻声说了句:“你也一样。”
走到路口,两人要往不同的方向走。“那我往这边走了,陆总监。”苏屿停下脚步。
“嗯。”陆承骁点了点头,“路上注意安全,到家发个消息。”
苏屿愣了一下,没想到他会这么说,心里暖暖的:“好,你也一样。晚安。”
“晚安。”
两人转身走向不同的方向,苏屿走了几步,忍不住回头看了一眼,陆承骁的背影挺拔,在夜色中渐行渐远。
他拿出手机,叫了辆车,嘴角却一直扬着——今晚这场突发危机,虽然折腾得够呛,却让他和陆承骁的关系又近了一步。
他能感觉到,陆承骁对他的态度,已经从最初的排斥、偏见,慢慢变成了认可、信任。
而他自己,也越来越欣赏这个外冷内热、技术过硬的技术总监。
另一边,陆承骁也放慢了脚步,回头看了一眼苏屿消失的方向。他拿出手机,犹豫了一下,还是点开了项目群,看到苏屿发的“已安全到家”的消息,才收起手机,继续往前走。
今晚的经历,让他对苏屿有了新的认识。
这个空降的产品经理,不仅有能力,还有担当,遇到问题不推卸责任,而是主动想办法解决,这种品质很难得。
而且,他身上有一种莫名的感染力,能让原本压抑的团队变得有干劲,这种凝聚力,是之前的项目团队所缺少的。
陆承骁心里清楚,他对苏屿的那点偏见,已经彻底消失了。现在,他更愿意把苏屿当成真正的合作伙伴,甚至是……可以信任的人。
夜风渐凉,却吹不散两人之间悄然滋生的默契与好感。
“启明”项目的道路依旧充满挑战,但只要他们再并肩同行,就没有解决不了的问题。
而他们之间的故事,也在这一次次的并肩作战中,慢慢走向更深更远的地方。