KTH, Skolan för elektroteknik och datavetenskap (EECS)
Abstract
Lineage-driven fault injection (LDFI) is an approach for finding bugs or faults in distributed systems. Its current state-of-the-art implementation, Molly, takes programs written in the logic programming language Dedalus as its input. The problem is that Dedalus is a small and obscure language, used to serve as a proof of concept for Molly. Thus, the objective of this thesis is to extend and adapt Molly to a general-purpose, object-oriented language where distributed programs are written using the actor-based framework Akka. This thesis presents a novel concept for employing lineage-driven fault injection for actor-based programs in addition to implementing said concept to analyze existing Akka programs. The results show that the lineage-driven fault injector for Akka programs, ldfi-akka, is capable of successfully pinpointing the weaknesses of the programs that can be analyzed in a feasible amount of time. However, ldfi-akka struggles to analyze larger and complex programs as the underlying SAT-solver used is overwhelmed. The correctness of the analysis made by ldfi-akka is partially based on the subject programs’ ability to a) be rewritten in such a way that logging can be added and b) exhibit deterministic behavior across multiple runs. Conclusively, this study presents a novel approach to employ lineage-driven fault injection on actor-based programs and ldfi-akka, an implementation of LDFI on Akka programs.Lineage-driven fault injection (LDFI) är en metod för att hitta fel i distribuerade system. Den främsta implementationen av LDFI, Molly, tar program skrivna i logikprogrammingeringsspråket Dedalus som inmatning. Problemet är att Dedalus är ett litet och obskyrt språk som användes i syfte att bevisa att metoden Molly baserar sin analys på, LDFI, fungerar i praktiken. Målet med denna studie är således att utvidga och anpassa Molly i syfte att öka tillgängligheten av implementationen genom att göra det möjligt att analysera distribuerade program skrivna i objekt-orienterade språk med hjälp av det agent-baserade ramverket Akka. I denna studie presenteras ett nytt koncept för att använda LDFI på agent-baserade program och därtill en implementation av konceptet som möjliggör analys av existerande Akka program. Resultaten visar att LDFI för Akka, ldfi-akka, är kapabel till att framgångsrikt identifiera svagheter av programmen som analyseras, givet att analysen kan ske inom ett rimligt tidsspann. För större program, emellertid, visar det sig att den underliggande SAT-lösaren blir överväldigad. Korrektheten av analysen som ldfi-akka gör grundar sig delvis i att programmen som analyseras a) kan omskrivas på ett sådant sätt att det är möjligt att de kan loggas och b) är deterministiska – programmet uppvisar samma beteende oavsett hur många gånger det körs. Slutsatsen som dras är att denna studie presenterar ett helt nytt sätt för att använda LDFI för att analysera agent-baserade program och ldfi-akka, som implementerar konceptet för program skrivna i Akka