crates.io 事故报告:Crate 下载中断

crates.io 事故报告:Crate 下载中断

💡 原文英文,约1600词,阅读约需6分钟。
📝

内容提要

2023年7月20日12:17至12:30 UTC期间,由于部署中包含下载URL生成的错误,导致crates.io上的所有crate下载都无法正常进行。在此期间,crates.io平均每秒收到4.71K个请求,共有约370万个请求失败,包括cargo的重试尝试。开发人员在部署后通过监控仪表板上升的请求每秒数发现了这一事件。此时,升高的数字的根本原因尚不清楚,但社区成员通过Zulip通知了开发人员。通知后,损坏的部署立即回滚到先前的部署,修复了下载问题。在此之前,有一个合并到crates.io的pull request,将crate和readme下载端点生成的重定向URL进行了重构。然而,该pull request引入了一些测试,但不幸的是,它使用的值与crates.io在生产中使用的环境变量内容不同,导致生产代码路径未经适当测试。生产代码路径存在一个错误,即从“CDN前缀”和“路径”组件生成的URL缺少斜杠(/)分隔符。这导致https://crates.io/api/v1/crates/smallvec/1.10.0/download重定向到https://static.crates.iocrates/smallvec/smallvec-1.10.0.crate,而不是https://static.crates.io/crates/smallvec/smallvec-1.10.0.crate。这个问题影响了所有在此期间尝试从crates.io下载crate文件的用户。用户在运行cargo时会看到类似以下错误的消息:警告:虚假的网络错误(剩余3次尝试):[6]无法解析主机名(无法解析主机:static.crates.iocrates)警告:虚假的网络错误(

🏷️

标签

➡️

继续阅读