一唆缴、問題描述
? ? ? 調度中有一個啟動調度的開關鳍征,打開后,工作流會按照設定的定時時間面徽,定時調度艳丛。但是線上偶發(fā)性開關打開了,工作流沒有被掉起趟紊,或者是開關關閉了氮双,定時任務在后臺持續(xù)進行。
二霎匈、追根溯源:
? ? ?代碼中戴差,是這么實現的:
(1)點擊定時開關后,會先將數據庫中的狀態(tài)修改铛嘱;
(2)再清除/插入數據入crontab表暖释。
? ? ? ?因此當第2步因為網絡或者是其他原因失敗時,雖然捕獲了異常墨吓,并設置了flag = false球匕,但是對該函數的返回值flag并沒有進行判斷,導致界面上雖然關閉了帖烘,但是實際上定時任務并沒有被清除亮曹。
改造后的程序:
三、啟發(fā)
? ? ? ?這種很掩蔽的問題如何去發(fā)現呢秘症,這要求我們測試了解開發(fā)的實現邏輯照卦,并對于這種應該具有原子性的操作進行白盒測試。