哈哈哈, 原来 cloudflare 写代码也用 unwarp() 呀

4 天前
 EeveeRibbon
我以为只有我在写工具的时候会这样偷懒,原来大厂的生产环境也能这么偷懒的......
4932 次点击
所在节点    程序员
27 条回复
qi1
4 天前
不太懂唉 大佬能细说下嘛
port
4 天前
那是 unwrap()
MAVETRICK
4 天前
unwarp()没绷住
DTCPSS
4 天前
我的评价是:? (操作符)
w568w
4 天前
用 unwrap() 从来都不是问题,问题是如何正确用 unwrap()。

致命性的、不可恢复的、编码性的错误( Error )就应该用 unwrap() 直接抛掉,强制终止运行状态不正常的进程,打印堆栈和 dump 以便后续查证;而一般性的异常( Exception )才应该用 Result 正确 handle 。
EeveeRibbon
4 天前
@MAVETRICK #3 手滑拼错了别在意哈哈
chenxuuu
4 天前
ethanwan9
4 天前
@chenxuuu 这人说话 GENAI 味儿好浓..
TimG
4 天前
看起来是个工程性难题。看楼上截图的解释,我还在思考用 clickhouse 推送配置是个什么操作。哈哈哈,水平差太远了,完全跟不上思路。
yb2313
4 天前
该用就用, 不过我一般会 expect 带上信息
kapaseker
3 天前
@qi1 rust 中有个函数 unwrap ,在碰到 error 和 none 这两个值的时候,就直接杀进程了(类似 Java 的排除异常,而没有 catch )。一般项目中为了防止这种情况,多半会用 unwrap_or 或者 unwrap_or_default ,这样在出现问题的时候会有默认值或者回退值。不过那篇文章我没有完全看完。完全怪这个函数我个人觉得应该不是主要问题。
michael2016
3 天前
@kapaseker You're right. The problem is that after an error is introduced, other nodes lack protection mechanisms, for example:
1. The BOT management module design lacks exception tolerance, which stems from two issues: an implicit assumption about the scale of the input data and an exception handling strategy when the assumptions are exceeded.
The current approach is to stop upon failure.
2. Internal changes lack a global impact assessment. For example, the optimization and adjustment of ClickHouse's permission management might affect surrounding coupled components. Could you run a real query in the test environment to test this?
3. Insufficient monitoring and fault drills. This internal anomaly was misdiagnosed as a DDoS attack, which affected the processing time.
victorc
3 天前
unwrap 是一坨屎一样的东西,我就是因为这个,把项目推了,用 c++重写,写了快 7 万行了,还行
设计这个语法的脑子有屎,是整天写脚本程序的玩意吗?
任何生产环境的服务,谁敢错误就退出,有大病
rust 完全是一个 shit ,无比恶心
kapaseker
3 天前
@victorc 这是个可选项,又不是必选项
jhdxr
3 天前
@victorc 写了七万行还不明白这个设计只能说你的能力也就是个入门的搬砖工。遇到没法恢复的异常,就应该尽快把异常暴露出来。生产环境更是如此,难道架构和 infra 设计稳定性的时候是靠服务自身的稳定性来保障全局的可用性?
akorn
3 天前
@michael2016 ClickHouse 权限影响范围应该挺大的,全量测试不现实.那工作量,赶上系统重构了.

@chenxuuu 比较认同 Guanlan 的回复,就本次事故,fearture file 没有容错机制,比 sql 审查影响大.容错机制是建制过程,是为了防止 sql 、代码等不规范,造成问题的手段.
jworg
3 天前
@victorc 我就知道有这个回复,unwrap 就是一坨。我可以不用,但我不能确保其他人不用,尤其是那些第三方依赖的 unwrap 。也不能怪第三方作者什么,在他们接触的场景里,一些 case 确实不会出现。最重要的,用了它后的错误信息一点也不直观,出了事故想要找在哪个位置一脸懵逼。
qW7bo2FbzbC0
3 天前
@livid #12 楼 这个是不是 ai 回复
billccn
3 天前
读完了整个 report ( https://blog.cloudflare.com/18-november-2025-outage/ ),感觉楼主有点标题党,根本原因是数据库变化导致配置生成了错误的配置文件,这个 unwrap 出现在读配置文件的地方,如果不是这里崩溃那反正后面也要死。

更大的问题是这个 bot 过滤功能不是完全必须的,但是和关键的 CDN 功能没有解耦,这个 report 里面已经说他们会加入更多的功能 kill switch 来解决。
shylockhg
3 天前
@jworg 首先大部分语言都提供了主动 crash 的功能,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1173703

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX