302,session失效

最近遇到一個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在設計表的時候沒有和需求同步,導致這一系列的問題。

總結了下,代碼不夠嚴謹,對異常處理沒有正確的捕獲,導致在分析問題過程出現無頭蒼蠅式的亂撞!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章