TripleAgent: Monitoring, Perturbation and FailureObliviousness for Automated Resilience Improvement in Java Applications In this paper, we present a novel resilience improvement system for Java applications. The unique feature of this system is to combine automated monitoring, automated perturbation injection, and automated resilience improvement. The latter is achieved thanks to the failureoblivious computing, a concept introduced in 2004 by Rinard and colleagues. We design and implement the system as agents for the Java virtual machine. We evaluate the system on two realworld applications: a file transfer client and an email server. Our results show that it is possible to automatically improve the resilience of Java applications with respect to uncaught or mishandled exceptions.

Resilient Distributed Causal Memory in ClientServer Model We study distributed causal shared memory (or keyvalue pairs) in an asynchronous network under crash failures. Causal memory, introduced by Ahamad et al. in the context of multiprocessor environment in 1994, is an abstraction which ensures that nodes agree on the relative ordering of read and write operations that are causally related on keyvalue pairs. Inspired by the recent interests in georeplicated causal storage systems (e.g., COPS, Eiger, Bolton), we systematically study the faulttolerance property of the causal shared memory in the clientserver model in this work. We identify that 2f  1 servers is both necessary and sufficient to build a resilient causal memory in the presence of up to f crashed servers. We provide both the necessity proof and a new optimal algorithm that matches the bound. For evaluation, we implement our algorithm in Golang and compare the performance with stateoftheart faulttolerant algorithms that ensure strong consistency in the Google Cloud Platform.