As a next step they should have wrapped everything in a true(while) loop so it automatically restarts and the program never dies
Comment on Cloudfare outage post mortem
panda_abyss@lemmy.ca 1 day ago
Classic example of how dangerous rust is.
If they had just used Python and ran the whole thing in a try block with bare except this would have never been an issue.
Thallium_X@feddit.org 1 day ago
panda_abyss@lemmy.ca 1 day ago
Exactly,
while True: try: main(); except: pass;
dan@upvote.au 1 day ago
The actual issue is that they should be canarying changes. Push them to a small percentage of servers, and ensure nothing bad happens before pushing them more broadly. At my workplace, configs are tested on one server, then an entire rack, then an entire cluster, before fully rolling out. The rollout process watches the core logs for things like elevated HTTP 5xx errors.
SinTan1729@programming.dev 1 day ago
I hope you’re joking. If anything, Rust makes error handling easier by returning them as values using the
Resultmonad. As someone else pointed out, they literally usedunwrapin their code, which basically means “panic if this ever returns error”. You don’t do this unless it’s impossible to handle the error inside the program, or if panicking is the behavior you want due to e.g. security reasons.Even as an absolute amateur, whenever I post any Rust to the public, the first thing I do is to get rid of
unwrapas much as possible, unless I intentionally want the application to crash. Even then, I useexpectinstead ofunwrapto have better error logging. This is definitely the work of some underpaid intern.panda_abyss@lemmy.ca 1 day ago
I was joking, but oof it did not go over well.
SinTan1729@programming.dev 1 day ago
Ah that makes sense. To be fair tho, there’s a lot of unwarranted hate towards Rust so it can be hard to tell.
panda_abyss@lemmy.ca 21 hours ago
I should bite the bullet and learn it.
I decided to learn zig recently, it feels like crafting artisanal software, which is what I liked C for. But it’s kinda janky in that each point version major features come and go (see io and async).
There’s a place for engineering software which is what rust seems great at. Definitely seems like a tool I could/would use as rust is taking over many of my tool workflows.
jimmy90@lemmy.world 1 day ago
honestly this was a coding cock-up. there’s a code snippet in the article that
unwraps on aResultwhich you don’t do unless you’re fine with that part of the code crashingi think they are turning linters back to max and rooting through all their rust code as we speak
Zwuzelmaus@feddit.org 1 day ago
So you think there is no error handling possible in Rust?
Wait until you find out that Pyhon doesn’t write the error handling by itself either…