儀表板本來一天部署三次,某天三次卻同時響了
夢想團隊的儀表板每天09:20、13:20、18:20自動部署三次。但某天,Slack通知卻連續三次在同一時刻同時抵達。羅波先發現這個異常,打開腳本查看。
原因很單純。凌晨Mac mini重新啟動,排程器試圖「補上錯過的任務」,結果一口氣把三次全部擠在一起執行了。時間表本身沒有錯,問題出在重啟的那個時間點。
「時間表對,不代表執行順序也對。」這是羅波留下的筆記。
萬能兒站出來提出解法。把最後一次執行的時間記錄在一個檔案裡,下次執行前先確認「上一次執行是幾分鐘前」。
若 (現在 - 上次執行 < 10分鐘) 就跳過
程式碼只有三行,但之後Mac mini又重啟過幾次,通知都沒有再一次擠在一起過。身為非工程師,讓我覺得神奇的是,問題的根源不是「時間」,而是「缺少基準點」。時鐘是準的,只是少了判斷「這是不是新任務」的依據。
一次小小的實驗,讓夢想團隊多了一條規則。現在每次把新的機器人加進排程器,都會預設加上這個檢查。