惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
Engineering at Meta
Engineering at Meta
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 聂微东
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Last Week in AI
Last Week in AI
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 三生石上(FineUI控件)
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
Hugging Face - Blog
Hugging Face - Blog
爱范儿
爱范儿
博客园 - 司徒正美
人人都是产品经理
人人都是产品经理
Jina AI
Jina AI
博客园 - 叶小钗
雷峰网
雷峰网
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - Franky
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
阮一峰的网络日志
阮一峰的网络日志
量子位

Deno

Deno 2.8 | Deno Claw Patrol: an open-source security firewall for agents | Deno Fresh 2.3: Zero JS by default, View Transitions, and Temporal support | Deno Deno 2.7: Temporal API, Windows ARM, and npm overrides | Deno Build a dinosaur runner game with Deno, pt. 6 | Deno Build a dinosaur runner game with Deno, pt. 5 | Deno Deno Deploy is Generally Available | Deno Introducing Deno Sandbox | Deno Build a dinosaur runner game with Deno, pt. 4 | Deno Build a dinosaur runner game with Deno, pt. 3 | Deno Build a dinosaur runner game with Deno, pt. 2 | Deno React / Next.js Denial-of-Service Vulnerability: Deno Deploy users protected | Deno Deno 2.6: dx is the new npx | Deno Build a dinosaur runner game with Deno, pt. 1 | Deno React Server Functions / Next.js Vulnerability: Deno Deploy users protected | Deno My highlights from the new Deno Deploy | Deno Deno's Other Open Source Projects | Deno How Deno protects against npm exploits | Deno Help Us Raise $200k to Free JavaScript from Oracle | Deno Deno 2.5: Permissions in the config file | Deno Fresh 2.0 Graduates to Beta, Adds Vite Support | Deno Deno 2.4: deno bundle is back | Deno JavaScript™ Trademark Update | Deno What's coming to JavaScript | Deno A brief history of JavaScript | Deno Reports of Deno's Demise Have Been Greatly Exaggerated | Deno An Update on Fresh | Deno How Plaid migrated 100 services to a new database platform 5x faster with Deno | Deno Deno 2.3: Improved deno compile, local npm packages, and more | Deno Add JSR packages with pnpm and Yarn | Deno
January 4th incident update | Deno
Kitson Kelly · 2022-01-05 · via Deno

On January 4th at 23:59 UTC for about 40 minutes, modules available on deno.land/x and deno.land/std failed to load properly. This was due to a buggy patch that made code be served as HTML rather than raw text. This post details what exactly happened and what we are doing to prevent this in the future.

All services are now operating normally again. No data was lost. We take outages like these seriously and sincerely apologize for the disruption.

Timeline of events

At 23:59 UTC a change was merged into the deno.land repo which improved completion suggestions for language server clients. It also included a refactor of the code that determined if the raw code should be served to a client or the code wrapped in HTML for display in a browser. The code made an incorrect assumption about the run-time client’s behavior, causing HTML to be served to run-time clients instead of the raw code.

At 00:20 UTC on Wednesday a reversion of this logic was attempted, but the deployment was unsuccessful.

At 00:39 UTC the code was amended again to refer to an earlier deployment of deno.land directly for the dependencies, which allowed the code to be deployed and restored service.

Root cause

deno.land/x and deno.land/std served code wrapped in an HTML user interface to run-times, instead of the plain code. The code was refactored to provide more complaint content negotiation, but did not account that run-time clients like the Deno CLI and Deno Deploy provide an Accept header in requests that indicates that all content types are acceptable, including text/html, therefore the code served HTML to those clients.

Deno Deploy lacked a “revert” capability, meaning that reverting to the previous commit was not possible and rolling forward to a new commit, which had dependencies on code hosted on deno.land/x and deno.land/std was not straight forward.

The code which determines if a client gets HTML or the plain code was tested using an incorrect assumption about what headers are sent from the Deno CLI and Deploy.

Impact

During the 40 minute outage, new deployments to Deno Deploy which had dependencies on deno.land/x or deno.land/std failed, indicating that the dependency was not a valid module. Also, any remote dependencies for deno.land/x or deno.land/std which were not cached locally in Deno CLI would have also failed, indicating that the dependency was not a valid module.

What’s next?

We are adding tests to deno.land worker to test the correct behavior of this code. We are also working on adding a feature to Deno Deploy to allow a “rollback” or a “revert” to a previous deployment.