User loginNavigation |
archivesFailure-oblivious computingThere've been a couple of threads recently about safety-critical code (Rules for, and in real-time Java). Safety-critical code necessarily includes careful handling of failure situations. Or does it? Here's another take on failure handling, from the opposite direction: Enhancing Server Availability and Security Through Failure-Oblivious Computing (Rinard et al., 2004) was originally presented at OSDI '04, but hasn't previously been featured here:
The paper includes descriptions of how this technique was applied with good results to servers such as Apache and Sendmail, as well as to client programs such as Pine, Mutt, and Midnight Commander. The paper also raises concerns about the potential for such techniques to create a bystander effect (although the term moral hazard might be more appropriate here), influencing programmers to be less careful about error handling because they have a safety net. This work was performed on programs written in C, and there's a temptation to think that the approach is only applicable to memory-unsafe languages. However, there's a connection here to the approach used by some of the classic shell scripting languages and their descendants such as Perl, in which certain kinds of failure are silently tolerated in the interests of keeping the program running. The approach could also have potential applications in other memory-safe languages, providing the potential for higher-availability programs, as noted in the paper's conclusion. While most language implementors aren't going to rush to incorporate failure-oblivious approaches in their languages, the positive results obtained from this work are thought-provoking, and could inspire other less traditional but effective ways of handling failure. By Anton van Straaten at 2006-07-07 14:20 | Fun | Software Engineering | 37 comments | other blogs | 20096 reads
|
Browse archivesActive forum topics |
Recent comments
21 weeks 6 days ago
22 weeks 3 hours ago
22 weeks 3 hours ago
44 weeks 1 day ago
48 weeks 3 days ago
50 weeks 11 hours ago
50 weeks 11 hours ago
1 year 4 days ago
1 year 5 weeks ago
1 year 5 weeks ago