Choreographies meet Communication Failures

Choreographies are global descriptions of communication structures, inspired by the "Alice and Bob" notation of security protocols. They have been successfully employed in the design and implementation of distributed systems. However, there is still limited evidence of the applicability of choreographies in the real-world setting of distributed programming, where communication actions may fail. In this work, we propose the first choreography model that allows for communication failures and the programming of user-defined code to deal with such failures. We validate our model by implementing common strategies for handling communication failures in a robust way, which in turn can be used as a library by choreographies that assume reliable communication. We equip our model with a typing discipline that can statically verify reliability properties, in particular at-most-once and exactly-once delivery. We demonstrate the applicability of our model by defining a semantics-preserving compilation procedure towards a process calculus equipped with unreliable I/O actions.

[1]  Ivan Lanese,et al.  Bridging the Gap between Interaction- and Process-Oriented Choreographies , 2008, 2008 Sixth IEEE International Conference on Software Engineering and Formal Methods.

[2]  Dimitrios Kouzapas,et al.  Session Types for Broadcasting , 2014, PLACES.

[3]  Nobuko Yoshida,et al.  Global escape in multiparty sessions † , 2014, Mathematical Structures in Computer Science.

[4]  Fabrizio Montesi,et al.  Deadlock-freedom-by-design: multiparty asynchronous global programming , 2013, POPL.

[5]  Nobuko Yoshida,et al.  Multiparty asynchronous session types , 2008, POPL '08.

[6]  Kai Heussen,et al.  Choreographing cyber-physical distributed control systems for the energy sector , 2017, SAC.

[7]  Luís Cruz-Filipe,et al.  A Core Model for Choreographic Programming , 2015, FACS.

[8]  Ivan Lanese,et al.  Dynamic Choreographies: Theory And Implementation , 2017, Log. Methods Comput. Sci..

[9]  Matthew Hennessy,et al.  A theory of system behaviour in the presence of node and link failure , 2008, Inf. Comput..

[10]  Kim S. Larsen,et al.  The Paths to Choreography Extraction , 2017, FoSSaCS.

[11]  Emilio Tuosto,et al.  From Communicating Machines to Graphical Choreographies , 2015, POPL.

[12]  Nobuko Yoshida,et al.  Compositional Choreographies , 2013, CONCUR.

[13]  Luís Cruz-Filipe,et al.  On Asynchrony and Choreographies , 2017, ICE@DisCoTec.

[14]  Robin Milner,et al.  A Calculus of Mobile Processes, II , 1992, Inf. Comput..

[15]  Luís Cruz-Filipe,et al.  Procedural Choreographic Programming , 2017, FORTE.

[16]  Flemming Nielson,et al.  Enforcing Availability in Failure-Aware Communicating Systems , 2016, FORTE.

[17]  Uwe Nestmann,et al.  Distributed Consensus, revisited , 2007, Acta Informatica.

[18]  Chao Cai,et al.  Towards the theoretical foundation of choreography , 2007, WWW '07.

[19]  Uwe Nestmann,et al.  Session Types for Link Failures , 2017, FORTE.

[20]  Nobuko Yoshida,et al.  Protocol-based verification of message-passing parallel programs , 2015, OOPSLA.

[21]  Nobuko Yoshida,et al.  Structured Communication-Centered Programming for Web Services , 2007, TOPL.

[22]  Davide Ancona,et al.  Behavioral Types in Programming Languages , 2016, Found. Trends Program. Lang..

[23]  Ivan Lanese,et al.  Foundations of Session Types and Behavioural Contracts , 2016, ACM Comput. Surv..

[24]  Patrick Th. Eugster,et al.  A Type Theory for Robust Failure Handling in Distributed Systems , 2016, FORTE.

[25]  Luca Padovani,et al.  Global progress for dynamically interleaved multiparty sessions , 2014, Mathematical Structures in Computer Science.