原 關於定時回查出現的BUG有感

2022-01-23 04:28:33 字數 627 閱讀 1203

首先寫下流程:p2p對接某銀行託管,某銀行的部分介面要求我們通過同步回查的方式對訂單再次確認,投標是其中乙個。我們這邊p2p後台是5分鐘查詢一次金額訂單表,把處理中和待處理的訂單拿出來組裝報文加密上送到x銀行,然後根據返回資料確認是否ok?如果失敗那麼這筆訂單關聯的操作也是失敗,成功則反之。

為什麼需要回查呢?

問題重現:

恰巧的是今天才發現這個bug,而且是很嚴重的bug。因為我再次確認訂單的時候,發現ctime和utime相隔1秒,但是很奇怪的使用者操作哪有這麼快1秒就完成了操作。再後來看到訂單建立時間是12:15分,馬上想起我們平台定時回查是5分鐘一次,剛好滿足定時任務,也就是使用者剛好12:15建立了一筆訂單是待處理,還沒跳到某銀行頁面,就被我們後台定時任務掃瞄去了某銀行,某銀行返報文沒有該訂單,然後悲劇來了,使用者高興的投了一筆錢,**的時候發現訂單失敗了,**不往下處理了,正是因為這樣這個原因導致為什麼看到投標失敗了但我的錢卻凍結了。

這時候不禁感覺一陣冷汗,要是以後搞什麼秒殺活動,或者人氣很高的時候,100個人都在定時任務掃瞄那個點投資出去那就悲劇了,可以想象一下100個人看到的結果都是失敗,然後我們要麼修改資料庫,要麼解凍使用者錢,但帶來的損失肯定沒辦法彌補了!

於是進行思考和查閱**後總結了如下2點:

不考慮mysql存放原因:

出現segment fault 錯誤的幾種原因

segment fault 段異常各種原因 www.myexception.cn 發布於 2012 11 26 11 48 50 瀏覽 24次 0 segment fault 段錯誤各種原因 一 造成segment fault,產生core dump的可能原因 1.記憶體訪問越界 a 由於使用錯誤的...

Web Service 呼叫日期出現偏差的原因

最近使用.net 的web service實現了一些 但是在客戶機器上面執行的過程中,發現系統提交的日期總是 比真是的日期少了12個小時,在開發環境中測試沒有任何問題。例如 北京時間2007年4月28日9點35分,寫入到資料庫之後,則變成了2007年4月27日21點35分。首先,聯想到使用delph...

windows 下的定時任務 原

linux 下的定時任務是crontab 以前都是linux的定時任務,這次在windows做了定時任務,簡單記錄一下 win8 跟 win10為例 控制面板 管理工具 任務計畫程式 右側建立任務 名稱自定義,建立者 我們是阿里雲的伺服器.用的是阿里雲的管理者名稱 新建觸發器 裡面東西根據自己需求更...