第426章 天快亮了!

投票推薦 加入書籤 小說報錯

  一月三號,凌晨兩點四十。

  三樓調試間的燈沒關過。

  從十二月初封閉開發到現在,這間屋子的日光燈管亮了整整一個月,中間換過一根,靠窗那根,閃了兩天之後自己滅了,老周讓方遠去行政部領了一根新的,方遠扛著一米二長的燈管從走廊那頭走過來的時候差點撞到消防栓。

  現在四根燈管都是亮的,白光,偏冷,照得每個人臉色都有點發青。

  調試間裡還剩兩個人。

  老周趴在靠門那張桌上,頭枕著左胳膊,右手搭在鍵盤邊上,手指微微蜷著,搪瓷缸歪在手邊,杯口的豁口朝上,裡面還有小半杯茶,涼透了,茶葉片貼在杯壁上,深褐色的。

  他大概是十二點多睡著的。

  方遠沒有叫他。

  方遠在最裡面那張桌上,三塊屏幕,左邊跑著v2.0引擎的72小時持續測試日誌,綠色的字在黑底上一行一行往上滾,速度很快,像瀑布,中間是代碼編輯器,光標停在第1847行,右邊是測試用例的覆蓋率面板,數字在緩慢變化。

  72小時持續測試從元旦那天下午三點開始。

  到現在已經跑了將近六十個小時。

  本地帳本模塊,占用鎖機制,最終一致性回調,1000並發,模擬斷網,模擬重連,模擬高延遲,模擬丟包,每一種異常場景都跑了至少兩百輪。

  六十個小時,零異常。

  方遠看著左邊屏幕上的日誌,綠色的,一直是綠色的。

  他揉了一下眼睛,眼鏡摘下來放在桌上,鏡片上有指紋,他用T恤的下擺擦了兩下,沒擦乾淨,又戴回去了。

  六十個小時零異常。

  按照正常流程,72小時跑完就可以出測試報告了,再過十二個小時,到明天下午三點,全綠就交。

  他本來可以去睡的,隔壁會議室鋪著兩個睡袋,一個藍色一個灰色,藍色的是他的,枕頭是從家裡帶的,記憶棉的,已經有點塌了。

  但他沒去。

  不是不困,是他有個習慣,跑長時間測試的時候,他喜歡盯著日誌看,不是看有沒有錯誤,是看日誌的節奏,正常運行的日誌有一種節奏感,像心跳一樣,均勻,穩定,如果有什麼地方不對,節奏會變。

  他盯了一會兒。

  綠色的字,一行一行。

  凌晨兩點五十一分。

  日誌的節奏變了。

  不是報錯,顏色還是綠色,但兩行日誌之間的間隔從平均3毫秒跳到了7毫秒,然後回到3毫秒,然後又跳到了9毫秒,然後回來。

  他坐直了。

  心跳漏了一拍,不是他的心跳,是日誌的心跳。

  他把日誌窗口拉大,打開時間戳詳細模式。

  找到了。

  第58小時43分12秒,本地帳本和中心帳本的一致性回調過程中,有一個極小概率的競態條件,當離線時間超過72小時後重新上線,如果本地帳本在回調過程中同時收到新的交易請求,占用鎖的釋放順序會產生一個0.003%概率的衝突窗口。

  0.003%。

  三萬三千次里出現一次。

  在冬奧的實際場景中幾乎不可能觸發,斷網不會超過72小時,一個小時都不太可能,測試大綱上的離線場景最長也就幾分鐘。

  幾乎不可能。

  他盯著那個數字看了十秒。

  然後他打開代碼編輯器。

  光標從第1847行跳到了第2091行,占用鎖的釋放邏輯。

  他開始改。

  調試間裡很安靜,暖氣管每隔一會兒咔一聲,像有人用指甲輕輕彈了一下鐵管,走廊盡頭自動售貨機的燈在閃,一明一暗,節奏跟暖氣管不同步,兩種聲音交替出現,像兩個人在用不同的方式呼吸。

  方遠不看時間。

  他在代碼里加了一層時間窗口校驗,如果本地帳本的離線時長超過設定閾值,回調過程中的占用鎖會自動進入排他模式,拒絕一切新交易請求直到回調完成。

  這個改動很小,邏輯上只是加了一個if判斷,但要保證這個判斷不影響正常場景下的性能,需要調整鎖的釋放序列。


  他從第2091行改到第2128行。

  37行。

  改完之後他沒有立刻提交,他先在腦子裡過了一遍,37行代碼,每一行他都能說清楚為什麼這麼寫。

  然後他回頭看了一眼老周。

  老周還在睡,姿勢沒變,右手搭在鍵盤邊上,食指微微搭在空格鍵上,隨著呼吸起伏,輕微的幅度,鍵盤沒有響,搪瓷缸還歪著,茶葉片在杯壁上沒動過。

  他沒叫。

  他打開測試框架,把修改後的代碼加載進去,啟動一輪完整的回歸測試。

  屏幕上開始跑。

  綠色的字又開始往上滾了。

  他靠在椅背上,摘下眼鏡,用拇指和食指捏了一下鼻樑,眼睛有點酸。

  回歸測試跑了四十分鐘。

  全綠。

  他重新戴上眼鏡,把修改提交到代碼倉庫。

  提交記錄的備註欄。

  他在裡面打了一行字。

  」72h+靜態修復·實際觸發概率≈0·但不允許≈0。」

  保存。

  然後他在測試用例文件里新開了一組,168小時,上周老周說」無上限」的時候他就想好了,168小時是7天,夠了,如果168小時也跑不出問題,那這個bug就算是徹底封死了。

  168小時的用例會在後台自動跑,不需要人盯著。

  他站起來。

  椅子在地板上蹭了一下,聲音不大,但在凌晨的安靜里還是很清楚。

  老周動了一下,沒醒,呼吸變了兩秒,又勻了。

  方遠走到窗邊。

  調試間的窗戶不大,對面是微光總部的B棟,灰色的外牆,窗戶都是暗的,樓下停車場空空的,路燈亮著,橘黃色的光打在地面上,濕漉漉的,大概半夜下過雨。

  天際線的邊緣有一條很淡的灰白色。

  天快亮了。

  杭州十二月底的天亮得很晚,要到七點以後天際線那道灰白色才會變成藍灰色,再變成灰白色,再慢慢亮起來。

  他看了一會兒。

  走廊那頭自動售貨機的燈還在閃,暖氣管又咔了一聲。

  他回到座位上,把眼鏡推了一下。

  拿起手機看了一眼時間,四點十九分。

  睡袋在隔壁,記憶棉枕頭有點塌了。

  他想了想,把手機放下,拉過鍵盤,打開了168小時測試的實時日誌。

  綠色的字開始滾了。

  他看著。

  …………

  上午九點二十,林徹到了三樓。

  調試間的門開著,老周坐在桌前,搪瓷缸換了新茶,熱氣從豁口那裡冒出來,方遠不在。

  」方遠呢?」

  」隔壁睡了,四點多的時候,」老周端起搪瓷缸喝了一口,」他昨晚修了一個東西。」

  林徹看了一眼老周的屏幕,72小時持續測試的最終報告,全綠,旁邊還開著一個窗口,168小時測試正在跑。

  」能?」

  老周放下搪瓷缸。

  」能。」

章節目錄