IT之家 6月4日消息,由于一個簡單的代碼錯誤,微軟Azure DevOps在南巴西地區(qū)的服務(wù)中斷了約十個小時。IT之家注意到,微軟的軟件工程經(jīng)理Eric Mattingly在周五為這次中斷道歉,并揭示了事故的原因:一個拼寫錯誤導致了十七個生產(chǎn)數(shù)據(jù)庫被刪除。
Azure DevOps提供一組集成的服務(wù)和工具,用于管理軟件項目,從規(guī)劃和開發(fā)到測試和部署。Mattingly解釋說,Azure DevOps的工程師有時會對生產(chǎn)數(shù)據(jù)庫進行快照(Snapshot),以便調(diào)查報告的問題或測試性能改進。他們依賴于一個每天運行的后臺系統(tǒng),該系統(tǒng)會在一定時間后刪除舊的快照。近日Azure DevOps的工程師進行了一次代碼升級,用支持的Azure.ResourceManager. NuGet包替換了已棄用的Microsoft.Azure.Managment. 包。這導致了一個大型的拉取請求,其中更換了舊包和新包中的API調(diào)用。
拼寫錯誤就發(fā)生在這個拉取請求中,它將刪除快照數(shù)據(jù)庫的調(diào)用換成了刪除托管數(shù)據(jù)庫的Azure SQL Server的調(diào)用。Azure DevOps有專門的測試來發(fā)現(xiàn)這樣的問題,但Mattingly說,由于錯誤的代碼只在某些條件下運行,因此現(xiàn)有的測試覆蓋不到。
幾天后,軟件更改被部署到南巴西規(guī)模單元(特定角色的服務(wù)器集群)的客戶環(huán)境。該環(huán)境有一個老的快照數(shù)據(jù)庫,觸發(fā)了這個錯誤,導致后臺任務(wù)刪除了“整個Azure SQL Server和所有十七個生產(chǎn)數(shù)據(jù)庫”。
所有數(shù)據(jù)都已經(jīng)恢復,但花了十多個小時。Mattingly說,有幾個原因造成這種情況。其中之一是,由于客戶無法自己恢復Azure SQL Server,必須由值班的Azure工程師來處理,這個過程大約需要一個小時。另一個原因是,數(shù)據(jù)庫有不同的備份配置:有些配置為區(qū)域冗余備份,有些配置為更新的地理區(qū)域冗余備份,解決這種不匹配增加了很長的恢復時間。
為了防止問題再次發(fā)生,Mattingly稱微軟已經(jīng)采取了各種修復和重新配置措施,并再次向所有受此中斷影響的客戶道歉。