记一次不太严重的生产事故

133 阅读1分钟

问题

一个在dev环境和uat环境验证过多次的功能,上生产短短两日就出现问题。一次防重校验把正确的数据拦截到了。

排查过程

1.代码逻辑的检查

多次并且反复梳理这个功能的代码片段,逻辑没有任何问题。dev环境和uat环境也没能复现。

2.考虑是否是缓存

1秒否定,这个项目并发小,数据量也小,至少目前没有缓存的必要

3.mysql是否进了脏数据

经过排查,没有脏数据

4.是否事务没有控制好,脏读、幻读?

因为使用的编程式事务,经过排查,到这一步校验前还没有进行过事务操作,这种可能也排除

5.隐式类型转换

因为上线比较急,熬了两天夜,排查到这里的时候头已经乱了,人也恍惚了,遂向同样即将崩溃的前辈请教了一句,得到的反馈是隐式类型转换,sql一测,代码一检查,我擦,真是这个问题。

总结

吃一堑长一智,希望这次教训让我以后避免同样的错误