您的位置:首頁(yè) > 資訊 >

全球快消息!一個(gè)代碼拼寫錯(cuò)誤,導(dǎo)致微軟 Azure DevOps 服務(wù)在巴西停擺十小時(shí)


(相關(guān)資料圖)

IT之家 6 月 4 日消息,由于一個(gè)簡(jiǎn)單的代碼錯(cuò)誤,微軟 Azure DevOps 在南巴西地區(qū)的服務(wù)中斷了約十個(gè)小時(shí)。IT之家注意到,微軟的軟件工程經(jīng)理 Eric Mattingly 在周五為這次中斷道歉,并揭示了事故的原因:一個(gè)拼寫錯(cuò)誤導(dǎo)致了十七個(gè)生產(chǎn)數(shù)據(jù)庫(kù)被刪除。

Azure DevOps 提供一組集成的服務(wù)和工具,用于管理軟件項(xiàng)目,從規(guī)劃和開(kāi)發(fā)到測(cè)試和部署。Mattingly 解釋說(shuō),Azure DevOps 的工程師有時(shí)會(huì)對(duì)生產(chǎn)數(shù)據(jù)庫(kù)進(jìn)行快照(Snapshot),以便調(diào)查報(bào)告的問(wèn)題或測(cè)試性能改進(jìn)。他們依賴于一個(gè)每天運(yùn)行的后臺(tái)系統(tǒng),該系統(tǒng)會(huì)在一定時(shí)間后刪除舊的快照。近日 Azure DevOps 的工程師進(jìn)行了一次代碼升級(jí),用支持的 Azure.ResourceManager.* NuGet 包替換了已棄用的 Microsoft.Azure.Managment.* 包。這導(dǎo)致了一個(gè)大型的拉取請(qǐng)求,其中更換了舊包和新包中的 API 調(diào)用。

拼寫錯(cuò)誤就發(fā)生在這個(gè)拉取請(qǐng)求中,它將刪除快照數(shù)據(jù)庫(kù)的調(diào)用換成了刪除托管數(shù)據(jù)庫(kù)的 Azure SQL Server 的調(diào)用。Azure DevOps 有專門的測(cè)試來(lái)發(fā)現(xiàn)這樣的問(wèn)題,但 Mattingly 說(shuō),由于錯(cuò)誤的代碼只在某些條件下運(yùn)行,因此現(xiàn)有的測(cè)試覆蓋不到。

幾天后,軟件更改被部署到南巴西規(guī)模單元(特定角色的服務(wù)器集群)的客戶環(huán)境。該環(huán)境有一個(gè)老的快照數(shù)據(jù)庫(kù),觸發(fā)了這個(gè)錯(cuò)誤,導(dǎo)致后臺(tái)任務(wù)刪除了“整個(gè) Azure SQL Server 和所有十七個(gè)生產(chǎn)數(shù)據(jù)庫(kù)”。

所有數(shù)據(jù)都已經(jīng)恢復(fù),但花了十多個(gè)小時(shí)。Mattingly 說(shuō),有幾個(gè)原因造成這種情況。其中之一是,由于客戶無(wú)法自己恢復(fù) Azure SQL Server ,必須由值班的 Azure 工程師來(lái)處理,這個(gè)過(guò)程大約需要一個(gè)小時(shí)。另一個(gè)原因是,數(shù)據(jù)庫(kù)有不同的備份配置:有些配置為區(qū)域冗余備份,有些配置為更新的地理區(qū)域冗余備份,解決這種不匹配增加了很長(zhǎng)的恢復(fù)時(shí)間。

為了防止問(wèn)題再次發(fā)生,Mattingly 稱微軟已經(jīng)采取了各種修復(fù)和重新配置措施,并再次向所有受此中斷影響的客戶道歉。

標(biāo)簽:

相關(guān)閱讀