It’s all about resilience, not about preventing bugs completely.
It’s all about resilience, not about preventing bugs completely. The beauty of it all is that you can skip on a lot of error handling code whose only purpose is to keep the system running. You only need to handle business logic errors. Let’s take a web server as an example. The way the “let it crash” philosophy is done in Erlang is that you crash individual processes first (e.g. the current HTTP request from one browser). If that keeps happening there’s a counter that crashes the subsystem (e.g. the web file listing component). If that too keeps crashing the whole web frontend might crash, but the node might still be up (e.g. serving FTP or whatnot). And lastly the node will shut down completely if the web frontend keeps crashing. This way, the rest of the system keeps performing and serving requests even if some parts are not working intermittently. On top of this you of course have (built-in) logging of all these errors so you can investigate them.
Posted by e_proxus on Sep 1, 2021, 5:31 PM
Tags
Related issues
Raise real-world problems, find people facing the same issue, and discuss solutions.3,000 issues0 comments
reliability (EdTech)
I frankly find the situation around UB puzzling.
I think it depends a little on how and where you work.
Self modifying has some sneaky failure modes with modern CPUs.
> Ban phones from class.
Coolify v5.x
Are you talking about a technical problem, or a conceptual problem?
This is not uncommon in the more blue-collar businesses.
> I wonder though, do people not strace programs any more?
It’s all about resilience, not about preventing bugs completely.
It’s all about resilience, not about preventing bugs completely. The beauty of it all is that you can skip on a lot of error handling code whose only purpose is to keep the system running. You only need to handle business logic errors. Let’s take a web server as an example. The way the “let it crash” philosophy is done in Erlang is that you crash individual processes first (e.g. the current HTTP request from one browser). If that keeps happening there’s a counter that crashes the subsystem (e.g. the web file listing component). If that too keeps crashing the whole web frontend might crash, but the node might still be up (e.g. serving FTP or whatnot). And lastly the node will shut down completely if the web frontend keeps crashing. This way, the rest of the system keeps performing and serving requests even if some parts are not working intermittently. On top of this you of course have (built-in) logging of all these errors so you can investigate them.
Comments (0)
No comments yet. Start the discussion.