出现时间
2020年01月13日 下午1点03分
午休还未睡醒,听到了老大的呼唤。
老大:XX,群里反馈有问题,你查一下啊。
我:好的!
立刻,瞬间清醒,看群里的问题截图。
具体问题
在线合同去签约,报错【服务器异常】。
问题定位
开始查问题,看日志,后发现因为代码(同事W写)合同过期时间判断有误,使用了过期的合同,进而无法进行签署,前端没绑定错误码描述异常,进而直接提示恐怖的服务器异常错误。
解决
- 立刻是找DBA临时修复了有效期的问题。
- 同事W修改代码逻辑后发布生产版本。
思考原因
- 目前团队缺少
codeReview
氛围,这种问题应该在codereview就能解决。
解决:【这里参考下之前很好codeReview方式,组内开发(<10人参加),主写人一行一行讲自己的代码(简单的简单带过,重要的逻辑细致的讲解),参与人有问题就提出,包括代码规范,逻辑问题,优化问题等,大致认同需要改的写上改动,加上fixme
标记,然后后边自行修改,改好后让别人check
一下即可。】,尽快配合推进codeReview
。 - 日志打印不是很规范,重要的业务一定要打印全部入参 出参,重要节点日志,方便查询问题。
解决:日志规范个人建议 重要业务的入参,出参,重要节点日志,不要嫌日志打印麻烦,查问题定位问题日志是一个很大的帮手,具体参考《阿里巴巴开发规范中日志规范》 - 数据库修改后没有更新
gmt_modified
字段,这样查问题也会有干扰,
解决:这个不多说了,update 语句都请更新gmt_modified字段,这也是代码规范的问题。 - 测试同学没有覆盖到这块逻辑、包括产品也不清楚这块过期逻辑。
解决:每一个业务相关的参数都应该让产品 测试知晓。这样才能覆盖全面的测试。 - 前端错误异常按给出的错误码显示,笼统的显示为服务器错误,不方便定位问题。
解决:每一个错误码前端异常提示对应的错误描述,较少定位问题时间。
总结
基本上出现问题是程序员自己埋得坑,除非外在(系统,网络,存储)的情况,出现问题应该第一时间考虑是自己的问题。
虽然这次不是自己的代码bug,但是我负责的项目,所以出现问题还是有责任的,很愧疚的。所以起了致 —— 第一次线上bug
的标题,希望自己能够记住。
相信广大猿友们对线上一直都是怀着一个敬畏的心,希望我们的心能够好好的安放。