問題描述

早上一到公司,接到運維部門同事報的一個高優(yōu)先級問題工單,描述如下:

“報銷單號關(guān)聯(lián)單子的審批記錄沒有了,但財務(wù)已做帳,導致相關(guān)審批人員需要重新審批?!?/p>

在正規(guī)大型互聯(lián)網(wǎng),數(shù)據(jù)丟失可算是嚴重級別為最高級0的問題了吧。

分析原因

這種問題從產(chǎn)品上線6個月前到現(xiàn)在都沒出現(xiàn)過,突然出現(xiàn)了,肯定是什么原因?qū)е碌摹?br/>事出一定有原因,找出原因是重中之重。數(shù)據(jù)丟失鐵定是由于在代碼中有刪除數(shù)據(jù)的行為。
于是優(yōu)先鎖定所有有刪除操作的地方,由于整個項目倉儲層是Dapper來實現(xiàn)的,所以通過表關(guān)鍵詞全局搜索,根據(jù)肉眼逐條排查包含Delete的語句的方法,記錄下來作為嫌疑對象。于是從200多個搜索結(jié)果中,得到一組7個方法的嫌疑清單,接下來分兩手行動。

  • 主線1.日志中查找出蛛絲馬跡??词欠袷窃谀撤N特殊情況下, 用戶非常規(guī)操作造成。由于系統(tǒng)有記錄所有操作的日志功能,但數(shù)據(jù)量無疑是巨大的,可以以時間為主線,根據(jù)單號,主鍵,嫌疑方法等關(guān)鍵詞來過濾記錄。

  • 主線2. 逐個代碼審查刪除邏輯前后上下文的相關(guān)代碼,看是否存在漏洞造成誤刪的情況。

經(jīng)過幾小時的排查,得到的結(jié)果令人沮喪。

    網(wǎng)友評論