今天dmap更新部署後,在qa的jpaas測試環境出現如下問題:
執行批量刪除任務時:
瀏覽器 沒收到任何返回。 直接就悲催了。
但實際上 從業務和數據庫來看,後臺 是執行了,而且執行 成功了。 後臺打印的日誌 一切正常。
在qa測試環境可以復現,但偶爾也不會出現。 本地開發環境無法復現。
聯繫OP排查 tomcat日誌 等一系列,從tomcat日誌看 ,後臺tomcat 訪問日誌 的確是HTTP 200 成功。
故可以判定後臺 收到請求,並且成功處理,返回給前面了。
一籌莫展之際,考慮到是否可以用 rest client 模擬http請求,看下後臺服務到底是否正常。
最後在qq羣裏請教其他前端人員。 有位同學 google 一下 “ provisional headers are shown”,找到如下網頁“ http://stackoverflow.com/questions/21177387/caution-provisional-headers-are-shown-in-chrome-debugger”
故懷疑是 前端 在 ajax返回前 就刷新了頁面 或者 跳轉到 其他頁面去了。
這一下啓發了我,因爲這次 上線,前端fe 的確做了更改。
故我開始排查 js代碼問題,發現了ajax 他設置了 timeout屬性 爲10s。
至此 真相大白,就是 因爲這個 請求後臺處理比較耗時,ajax在等待 10s 發現 後臺 還未返回,就自動斷開了連接。
故出現奇怪問題。
解決辦法:
方法1 : 將ajax請求改成 同步。
方法2: 去掉 timeout屬性的設置。
思考: 有時考慮問題 不能侷限於 常規場景,要發散。 可能你以爲 不可能出現問題的 地方 就在哪兒。 真有可能 是其他人挖的坑~