最近遇到一个bug,不觉中很搞笑,也是说多了都是泪。
某天,运营MM突然反馈说线上某个添加功能突然不能用了,点击提交之后系统自动退出。刚开始,技术GG在运营MM电脑旁边,切换各种浏览器,清理缓存、打开调试工具(装逼嫌疑较大,不过也是发现问题的有效方式)。http请求302,然后就是重定向到登录地址,一脸懵逼。运营MM看着技术GG一筹莫展的样子,然后安慰技术GG,说之前是正常的,今天突然就这样了。技术GG没办法,找到运维大叔,运维大叔对近期版本进行核对,发现没有涉及相关文件。难道就无缘无故的就崩溃了?
线上不能调试,那就拉灰度吧。灰度拉好了,也下班了,在地铁上的运营MM被迫赶回来,在一堆技术GG前面编辑着同样的内容。然后测试,问题依然存在,将一模一样的内容放到测试环境,问题没有出现,那么,在代码同步的情况,出现这样的状况,基本可以确定是服务器环境配置不同步了。刚开始也没思绪,根据之前趟过的坑,依稀记得程序在某些警告的情况,也会出现302的状况。程序错误也极有可能导致session失效。检查程序,中断程序,问题依然没有发现,后来,一技术GG说,怎么看着标题有点长啊?
众程序GG不赞同,因为前后端都有判断,测试人员也经过了几十轮的测试。这种问题基本可以忽略。懵逼了大概20分钟,有个程序GG提出,将所有sql打印出来,再通过数据库工具执行一下。死马当活马医,然后把相关的sql都打印出来。在测试环境执行一遍,都执行成功,那么sql本身没有问题,看执行结果,发现在刚刚那个程序GG说的标题那,被自动截取了。查看字段长度设置,字段不够长,测试环境没有开启严格模式,sql依然执行成功了。试着将线上对应的字段长度改到足够长度,运营MM点击提交,成功!
晕,搞其他的去了,没感觉了...
可是为啥js和后端程序都验证通过了呢?
查看了下程序,长度控制跟着需求走,DBA在设计表的时候没有和需求同步,导致这一系列的问题。
总结了下,代码不够严谨,对异常处理没有正确的捕获,导致在分析问题过程出现无头苍蝇式的乱撞!
一个因线上系统中标题字段长度不足而导致的302重定向问题,最终通过调整数据库字段长度解决。
983

被折叠的 条评论
为什么被折叠?



