A Graphical Interactive Debugger for Distributed Systems

06/13/2018
by   Doug Woos, et al.
0

Designing and debugging distributed systems is notoriously difficult. The correctness of a distributed system is largely determined by its handling of failure scenarios. The sequence of events leading to a bug can be long and complex, and it is likely to include message reorderings and failures. On single-node systems, interactive debuggers enable stepping through an execution of the program, but they lack the ability to easily simulate failure scenarios and control the order in which messages are delivered. Oddity is a graphical, interactive debugger for distributed systems. It brings the power of traditional step-through debugging---fine-grained control and observation of a program as it executes---to distributed systems. It also enables exploratory testing, in which an engineer examines and perturbs the behavior of a system in order to better understand it, perhaps without a specific bug in mind. A programmer can directly control message and failure interleaving. Oddity supports time travel, allowing a developer to explore multiple branching executions of a system within a single debugging session. Above all, Oddity encourages distributed systems thinking: rather than assuming the normal case and attaching failure handling as an afterthought, distributed systems should be developed around the certainty of message loss and node failure. Graduate and undergraduate students used Oddity in two distributed systems classes. Usage tracking and qualitative surveys showed that students found Oddity useful for both debugging and exploratory testing.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
09/07/2019

GoTcha: An Interactive Debugger for GoT-Based Distributed Systems

Debugging distributed systems is hard. Most of the techniques that have ...
research
12/16/2020

Causality is Graphically Simple

Events in distributed systems include sending or receiving messages, or ...
research
01/25/2023

MAGπ: Types for Failure-Prone Communication

Multiparty Session Types (MPST) are a typing discipline for communicatio...
research
08/18/2019

Feedback-based, Automated Failure Testing of Microservice-based Applications

Modern distributed applications are moving toward a microservice archite...
research
03/01/2023

An Exploratory Study on the Usage and Readability of Messages Within Assertion Methods of Test Cases

Unit testing is a vital part of the software development process and inv...
research
06/20/2020

Compiler Directed Speculative Intermittent Computation

This paper presents CoSpec, a new architecture/compiler co-design scheme...
research
02/02/2023

MLOps with enhanced performance control and observability

The explosion of data and its ever increasing complexity in the last few...

Please sign up or login with your details

Forgot password? Click here to reset