故障处理过程:
18:06分生产环境上线。
测试更新,查询没有问题,显示没有问题。认为上线完成
18:55分复测功能的时候。删除就诊人,重新添加就诊人提示已绑定就诊人。第一反应代码出现问题。定位代码,发现本地测试代码因为权限校验。手动写死了用户id,并提交到了生产环境。
立马改回原有形式,提交代码
19:07分联系XX合并代码
19:11分部署生产环境问题解决
19:20分进入生产环境数据库确认数据是否有异常。
发现数据库中存在6条错误数据。
比对确认了其中5条对应的正确用户id。
慎重考虑重新部署以后数据无其他影响,需要这6位用户重新添加就诊人。
故障原因分析:
提交代码没有仔细检查改动的地方是否真的无误。
合并master版本没有仔细检查改动的代码是否无误。
部署以后测试的场景没有覆盖整个代码改动部分。
Ask 5 whys:
为什么本地测试的代码会提交? 提交没有认真核对所有改动的代码
为什么本地会写测试代码? 历史遗留因素,不好进行改动,沿用了测似乎代码
为什么不进行优化,继续使用错误的写法?没有去推动,壁垒有点高。。。不过那也得尝试去解决
为什么提交生产环境没有发现问题?线上版本合并没有系统的审查流程。
为什么测试没有发现问题?测试考虑不够周全,没有测试到所有的场景。没有找第二人进行复测
故障后续整改计划:
- 提交代码之前自己再比对代码改动记录审核一遍
- 测试多考虑其他可能的影响,不仅仅是改动的一个模块
- 部署生产要加入审查流程。审核仔细
- 生产环境进行复测,及时发现可能存在的问题
这次算不上大事故,自己主动发现了,影响也在可控范围内,但这种情况的发生是对自己的一次警醒。引以为戒!!!