[Paper Review] Building a self-healing operating system
Short Introduction to This PaperThe paper is written in good texts and it introduces several interesting self-healing strategies for a operating system (not for a specific application). However there is a plethora of related work in hardware and software fault-tolerance.The contribution of this paper is mainly a survey of techniques that can be applied to provide self-healing functionality to an OS. It discussed the concepts, implementation and evaluation on exception handling, code reloading, operating system component isolation, micro-rebooting, automatic system service restarts, watchdog timer based recovery and transactional components.[...]
[Paper Review] Changing Javas Semantics for Handling Null Pointer Exceptions
Short Introduction to This PaperThis paper introduces APPEND , an automated approach to preventing and handling null pointer exceptions in Java programs. It analyzes programs to locate possible null pointer dereferences and then inserts null checks and error handling code. The error-handling code is specified at compile-time via composable, context-sensitive recovery policies.[...]
[Paper Review] A Platform for Automating Chaos Experiments
Short Introduction to This PaperThis paper describes the Chaos Automation Platform (ChAP), a system for running failure injection experiments on the production system to verify that failures in non-critical services do not result in system outages.[...]
[Paper Review] Characterizing Self-Healing Software Systems
Short Introduction to This PaperThis paper characterizes self-healing software systems by surveying some of the existing work in the field. It maps the space of software self-healing capabilities and discusses the risks and limitations inherent in automatic-reaction schemes. The structure of this paper is quite clear, including "what", "why", "how" and "future directions" on self-healing systems.[...]
[Paper Review] Elements of the Self-Healing System Problem Space
Short Introduction to This PaperThis paper proposes a taxonomy for describing the problem space for self-healing systems including fault models, system responses, system completeness, and design context. It is hoped that this taxonomy will help researchers understand what aspects of the system dependability problem they are (and aren't) addressing with specific research projects.Highlights of This PaperProblem space model elements[...]
[Paper Review] How to Design a Program Repair Bot - Insights from the Repairnator Project
Short Introduction to This PaperThis paper investigates the concept of a "program repair bot" and present Repairnator. The Repairnator bot is an autonomous agent that constantly monitors test failures, reproduces bugs, and runs program repair tools against each reproduced bug. If a patch is found, Repairnator bot reports it to the developers. At the time of writing, Repairnator uses three different program repair systems and has been operating since February 2017. In total, it has studied 11 317 test failures over 1 609 open-source software projects hosted on GitHub, and has generated patches for 17 different bugs.Highlights of This PaperA blueprint design of a program repair bot for continuous integration (CI) test failuresA set of unique empirical facts about program repair and bug reproduction collected over 11 317 test failures across 1 609 software projects7 recommendations to help future authors of program repair bots[...]
[Paper Review] Fault Injection in Production - Making the case for resilience testing
Short Introduction to This PaperThis paper gives us an introduction about how Etsy uses "GameDay" to build more confidence about their system's behavior. Specifically, it includes the discussion about 1) why apply it in production environment, 2) how to do fault injection during a GameDay exercise, 3) business justification and 4) a case, limitations and fear.Highlights of This PaperIntroduction about the provisioning of a server or cloud instance from zero to productionExplanation about why many complex systems are largely intractablePattern about GameDay exercise, introducing the methodology of how they doing fault injection in a real company[...]
[Paper Review] Dissection of a Bug Dataset - Anatomy of 395 Patches from Defects4J
Short Introduction to This PaperThis paper deeply studied 395 patches of the Defects4J dataset. Quantitative properties (patch size and spreading) were automatically extracted, whereas qualitative ones (repair actions and patterns) were manually extracted using a thematic analysisbased approach. It found that:1) the median size of Defects4J patches is four lines, and almost 30% of the patches contain only addition of lines;2) 92% of the patches change only one file, and 38% has no spreading at all;3) the top-3 most applied repair actions are addition of method calls, conditionals, and assignments, occurring in 77% of the patches;4) nine repair patterns were found for 95% of the patches, where the most prevalent, appearing in 43% of the patches, is on conditional blocks.These results are useful for researchers to perform advanced analysis on their techniques’ results based on Defects4J. Moreover, this set of properties can be used to characterize and compare different bug datasetsHighlights of This PaperThe anatomy of the patches in Defects4J containing an extensive set of patch properties, consolidated into a JSON file and augmented with a web user-interface to facilitate explorationA bug dataset dissection methodology to extract valuable quantitative and qualitative properties regarding patches from bug datasets. The methodology is based on diff and advanced patch analysis and combines automated and manual thematic analysisA taxonomy of repair actions and patterns, resulted from manual analysis of patches according our methodologyKey InfomationResearch questions:What is the size distribution of Defects4J patches?To what extent are Defects4J patches spread in source code?What is the composition of Defects4J patches in terms of repair actions (additions, removals and modifications) over code elements (e.g. conditions and method calls)?What repair patterns can be found in Defects4J using a manual thematic analysis?Data Collection: For each bug, first produced diff views between the buggy program version and its associated fixed version. These views served as source for data extraction and analysisRepair Patterns in the Defects4J Patches:Conditional BlockExpression FixWraps-with / Unwraps-fromSingle LineWrong ReferenceMissing Null-CheckCopy / PasteConstant ChangeCode MovingRelevant Future WorksMaybe some supplement for Defects4J's documentCharacterization and comparison between different bug datasetsURLDissection of a Bug Dataset: Anatomy of 395 Patches from Defects4J
[Notes] Chaos Engineering, Building Confidence in System Behavior through Experiments
Part I IntruductionChaos Engineering is the discipline of experimenting on a distributed system in order to build confidence in the system’s capability to withstand turbulent conditions in production.-- Principles of ChaosUsing Chaos Engineering may be as simple as manually running kill -9 on a box inside of your staging environment to simulate failure of a service. Or, it can be as sophisticated as automatically designing and carrying out experiments in a production enviroment against a small but statistically significant fraction of live traffic.The History of Chaos Engineering at Netflix: started in 2008Chaos Monkey: ball rolling, gaining notoriety for turning off services in the production environmentChaos Kong: transferred those benefits from the small scale to the very largeFailure Injection Testing (FIT): the foundation for tackling the space in between[...]
[Paper Review] Data Poisoning: Lightweight Soft Fault Injection for Python
Short Introduction to This PaperThis paper introduces and explores the idea of data poisoning, a light-weight peer-architecture technique to inject faults into Python programs. This method requires very small modification to the original program, which facilitates evaluation of sensitivity of systems that are prototyped or modeled in Python. Actually this paper doesn't show much detail about the implementation, but the types of data poisoning it declares are very interesting.Highlights of This PaperData poisoning's symbolic expressionDifferent types of data poisoningKey InfomationTypes of data poisoning: deterministic effect poisoning, intermittent effect poisoning (need define the lifetime of poisoned data), infectious/non-infectious poisoningRelevant Future WorksOnly doing data poisoning is not enough, we should analysis the system's behaviour under different types of perturbationURLData Poisoning: Lightweight Soft Fault Injection for Python