Checkpoint-based rollback recovery in session programming
Claudio Antares Mezzina, Francesco Tiezzi, Nobuko Yoshida
TL;DR
The paper introduces cherry-pi, a reversible session calculus with explicit commit, rollback, and abort primitives to enable checkpoint-based rollback recovery in communication-centric systems. A decidable, type-level compliance framework ensures that rollbacks cannot undo checkpoints imposed by other participants, guaranteeing rollback safety and progress, and this safety is validated via a MAUDE-based implementation. The authors demonstrate the approach with a video-on-demand example, provide formal semantics and typing rules, and prove key properties including error-freedom, progress, and commit persistency. A MAUDE-based compliance checker and executable type configurations illustrate practical feasibility, while speculative-parallelism scenarios reveal the approach's potential in real-world fault-tolerant and parallel systems.
Abstract
To react to unforeseen circumstances or amend abnormal situations in communication-centric systems, programmers are in charge of "undoing" the interactions which led to an undesired state. To assist this task, session-based languages can be endowed with reversibility mechanisms. In this paper we propose a language enriched with programming facilities to commit session interactions, to roll back the computation to a previous commit point, and to abort the session. Rollbacks in our language always bring the system to previous visited states and a rollback cannot bring the system back to a point prior to the last commit. Programmers are relieved from the burden of ensuring that a rollback never restores a checkpoint imposed by a session participant different from the rollback requester. Such undesired situations are prevented at design-time (statically) by relying on a decidable compliance check at the type level, implemented in MAUDE. We show that the language satisfies error-freedom and progress of a session.
