A multiparty session typing discipline for fault-tolerant event-driven distributed programming
dc.contributor.author | Viering, M | |
dc.contributor.author | Hu, R | |
dc.contributor.author | Eugster, P | |
dc.contributor.author | Ziarek, L | |
dc.date.accessioned | 2021-11-05T11:58:31Z | |
dc.date.available | 2021-11-05T11:58:31Z | |
dc.date.issued | 2021-10-20 | |
dc.identifier.issn | 2475-1421 | |
dc.identifier.uri | https://qmro.qmul.ac.uk/xmlui/handle/123456789/75054 | |
dc.description.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%. | en_US |
dc.format.extent | 1 - 30 | |
dc.publisher | Association for Computing Machinery | en_US |
dc.relation.ispartof | Proceedings of the ACM on Programming Languages | |
dc.rights | This item is distributed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits unrestricted use, distribution, and reproduction in any medium, provided you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license, and indicate if changes were made. | |
dc.rights | Attribution 3.0 United States | * |
dc.rights.uri | http://creativecommons.org/licenses/by/3.0/us/ | * |
dc.title | A multiparty session typing discipline for fault-tolerant event-driven distributed programming | en_US |
dc.type | Article | en_US |
dc.rights.holder | © 2021, The Author(s) | |
dc.identifier.doi | 10.1145/3485501 | |
pubs.issue | OOPSLA | en_US |
pubs.notes | Not known | en_US |
pubs.volume | 5 | en_US |
rioxxterms.funder | Default funder | en_US |
rioxxterms.identifier.project | Default project | en_US |
Files in this item
Files | Size | Format | View |
---|---|---|---|
There are no files associated with this item. |
This item appears in the following Collection(s)
Except where otherwise noted, this item's license is described as This item is distributed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits unrestricted use, distribution, and reproduction in any medium, provided you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license, and indicate if changes were made.