今天,我出生产事故了。用户无法登录应用,公司蒙受损失。
前几天,应运营部门需求,我在管理系统中添加了修改某个数据的功能。我在本地测试后,确认没有问题,发起jira给运维人员发布更新。确认功能已经部署到正式环境,我向提需求的运营人员交了差。运营人员开始使用新功能,修改目标数据。
今天,同组的小伙伴突然发现生产库某关键数据没有了,会导致用户无法登录。小伙伴立即报告领导,领导紧急召开会议,确认代码是我提交的,让我立即撤下该功能。同时,运维人员立即尝试数据恢复,报告问题的小伙伴则寻找相关记录,尝试手动恢复数据。
一个小时后,小伙伴成功恢复了数据,运维也找到了备份数据。而我这里却没办法找到问题发生的原因。本地完全无法复现问题,code review也没有找到问题。查询操作记录后,我才发现系统并未记录请求中body的数据,仅有请求的URL。而据运营人员回忆,他并未修改这些缺失了的字段。
由于现在数据已经恢复,我无法确定所谓缺失,是数据为null还是空字符串。就代码而言,我为表单字段设置了初始值。若该字段在数据库原本有值,那打开表单时就会展示出来,不修改直接提交不可能会丢失该数据。若该字段在数据库原本为null,那在表单中未操作的话其值就是null,操作了未填写值的话,那就是空字符串。无论如何也不应该是数据丢失的。
目前还在继续找原因。至于处罚,听天由命。