昨天下午修bug修得头昏脑胀,突然看见报错日志里蹦出来个"17-4迷雾"的字眼,当场给我整懵了。这啥玩意儿?名字听着跟武侠小说似的,结果把我项目整得页面空白,接口直接罢工。
查文档查了个寂寞
第一反应肯定是翻官方文档。结果你猜怎么着?搜索框里输入"17-4迷雾",屁都没蹦出来一个。连社区论坛里都只有零星几个人在骂:"这鬼东西突然就报错了!"
硬着头皮趟雷
实在没招了,只能把报错时间段的代码一寸寸扒开来瞅。发现每次弹这个错误的时候,数据库里总有几条数据像被狗啃过一样:
- 手机号码缺了三位数
- 身份证号少四个数
- 最离谱的是收货地址字段直接空了半边
心里咯噔一下,赶紧去翻代码里的校验规则。好家伙,有个字段长度限制写的竟然是length="17-4"!这写法活见鬼了,正常不都是直接写个固定数字吗?
钻进源码挖真相
气得我直接下载了框架源码,全局搜索这个"17-4"。结果在某个犄角旮旯的工具类里揪出段注释:"特殊场景:部分字段需要截断尾部校验码(参考格式:17-4)"。后面还跟着三行小字:
- 仅适用于旧系统迁移数据
- 新业务严禁使用
- 该配置会导致校验器误伤正常数据
当时就气得一巴掌拍大腿上。哪个缺心眼的把过渡方案写成固定配置?更绝的是这破配置埋在三层依赖包里头,文档提都没提!
连夜填坑实录
抄起键盘就开始干:
- 先把代码里所有见鬼的"17-4"全替换成20
- 给数据库存量数据做了个大扫除,短斤缺两的全补上随机数占位
- 用红笔在小组白板上狂写:"谁敢再用17-4,罚请一个月奶茶!"
凌晨两点测试环境终于跑通了,结果早上产品经理突然在群里@我:"那个17-4是用来处理...(此处省略200字)",没等他说完我直接回复:"已经埋了,勿念。"
搞笑的是下午公司突然断电,运维小哥吭哧吭哧修服务器时,看见我贴的白板笑得手抖接错线,又把测试库给烧了。现在整个组都知道——17-4这玩意儿不止坑代码,还TM克供电系统!