Generative communication in Linda
ACM Transactions on Programming Languages and Systems (TOPLAS)
JELIA '96 Proceedings of the European Workshop on Logics in Artificial Intelligence
Recovery blocks in action: A system supporting high reliability
ICSE '76 Proceedings of the 2nd international conference on Software engineering
Recursive Restartability: Turning the Reboot Sledgehammer into a Scalpel
HOTOS '01 Proceedings of the Eighth Workshop on Hot Topics in Operating Systems
ACTORS AND CONTINUOUS FUNCTIONALS
ACTORS AND CONTINUOUS FUNCTIONALS
Advances in dataflow programming languages
ACM Computing Surveys (CSUR)
Rx: treating bugs as allergies---a safe method to survive software failures
Proceedings of the twentieth ACM symposium on Operating systems principles
MapReduce: simplified data processing on large clusters
OSDI'04 Proceedings of the 6th conference on Symposium on Opearting Systems Design & Implementation - Volume 6
Rollback and Recovery Strategies for Computer Programs
IEEE Transactions on Computers
Contract-based data structure repair using alloy
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Bristlecone: Language Support for Robust Software Applications
IEEE Transactions on Software Engineering
COORDINATION'06 Proceedings of the 8th international conference on Coordination Models and Languages
Hi-index | 0.00 |
We present a new approach for developing robust software applications that breaks dependences on the failed parts of an application's execution to allow the rest of the application to continue executing. When a failure occurs, the recovery algorithm uses information from a static analysis to characterize the intended behavior of the application had it not failed. It then uses this characterization to recover as much of the application's execution as possible. We have implemented this approach in the Bristlecone compiler. We have evaluated our implementation on a multiplayer game, a web portal, and a Map Reduce framework. We found that in the presence of injected failures, the recovery task version provided substantially better service than the control versions. Moreover, the recovery task version of the game benchmark successfully recovered from a real fault that we accidentally introduced during development, while the same fault caused the two control versions to crash.