2019年3月5日的生产事故,是我成为一名光荣的程序员后的第一次。团队所有人一起紧急处理,在发现问题后的两个小时内,恢复了服务。
没有人责怪我,我依旧很忐忑。
主管很生气,却也没有再说责备的话,只是告诉我必须找到原因,后续会召开复盘会议。
老板目前还在出差,群内关于事故的消息老板没有回复,不知道是没注意,还是准备回来了再处理。
回顾整个过程,我的心态也发生了很大的变化。一开始我是不信的,我一直觉得自己负责的这一块仅供内部使用,并未牵扯到生产环境和客户端。发现问题小伙伴的紧张态度和主管审问般的语气击碎了我的怀疑。紧跟着主管开始发号施令,我的任务是撤下相关功能并找出原因。带着不甘心,我开始查日志,做测试,尝试复现问题。
然而,直到问题解决了,我依旧没有找到原因。主管再次强调必须找到原因。
我找到同组的小伙伴帮我review我的代码,她确认代码没有问题。我更加困惑了,原因到底出在哪里?
我根据系统操作记录再去找运营人员,是他修改了数据。根据他模糊不清的描述,我认为是他误操作导致数据被覆盖的。我没有直接指出这一点,因为即使是他的操作失误,也是建立在我给他提供这个功能的基础上的。
运维的同事联系了我,问我是否有可能是后端和前端部署时间不一致导致的。这句话让我突然想到,在运营人员操作前后,我曾经hotfix过一个bug,这个bug会导致form打开后显示上一次打开的数据。若在他执行修改时第一次打开form时关键字段是没有数据的,那后续打开form执行修改,就会刷掉已有数据。而之所以我无法复现该问题,是因为测试代码已经是最新的了,没有该bug。
最后,我提交了事故报告给主管。报告中指出,问题的原因是我的代码不规范,并且说明了问题已经解决。
截至目前,没有特别处罚。希望老板回来也不会有。毕竟老板还未就此事发言,说不定人家根本不关心(๑ʘ∆ʘ๑)