Litcius/Paper detail

A multiparty session typing discipline for fault-tolerant event-driven distributed programming

Malte Viering, Raymond Hu, Patrick Eugster, Lukasz Ziarek

2021Proceedings of the ACM on Programming Languages13 citationsDOIOpen Access PDF

Abstract

This paper presents a formulation of multiparty session types (MPSTs) for practical fault-tolerant distributed programming. We tackle the challenges faced by session types in the context of distributed systems involving asynchronous and concurrent partial failures – such as supporting dynamic replacement of failed parties and retrying failed protocol segments in an ongoing multiparty session – in the presence of unreliable failure detection. Key to our approach is that we develop a novel model of event-driven concurrency for multiparty sessions. Inspired by real-world practices, it enables us to unify the session-typed handling of regular I/O events with failure handling and the combination of features needed to express practical fault-tolerant protocols. Moreover, the characteristics of our model allow us to prove a global progress property for well-typed processes engaged in multiple concurrent sessions, which does not hold in traditional MPST systems. To demonstrate its practicality, we implement our framework as a toolchain and runtime for Scala, and use it to specify and implement a session-typed version of the cluster management system of the industrial-strength Apache Spark data analytics framework. Our session-typed cluster manager composes with other vanilla Spark components to give a functioning Spark runtime; e.g., it can execute existing third-party Spark applications without code modification. A performance evaluation using the TPC-H benchmark shows our prototype implementation incurs an average overhead below 10%.

Topics & Concepts

Computer scienceSession (web analytics)ConcurrencySPARK (programming language)ToolchainFault toleranceDistributed computingAsynchronous communicationScalaContext (archaeology)Benchmark (surveying)Event (particle physics)Programming paradigmOverhead (engineering)Operating systemProgramming languageComputer networkJavaSoftwareGeographyBiologyPhysicsQuantum mechanicsGeodesyPaleontologyWorld Wide WebDistributed systems and fault toleranceSoftware System Performance and ReliabilityCloud Computing and Resource Management