Fault-tolerant Distributed Reactive Programming

Authors Ragnar Mogk, Lars Baumgärtner, Guido Salvaneschi, Bernd Freisleben, Mira Mezini

Thumbnail PDF


  • Filesize: 0.68 MB
  • 26 pages

Document Identifiers

Author Details

Ragnar Mogk
  • Technische Universität Darmstadt, Germany
Lars Baumgärtner
  • Philipps-Universität Marburg, Germany
Guido Salvaneschi
  • Technische Universität Darmstadt, Germany
Bernd Freisleben
  • Philipps-Universität Marburg, Germany
Mira Mezini
  • Technische Universität Darmstadt, Germany

Cite AsGet BibTex

Ragnar Mogk, Lars Baumgärtner, Guido Salvaneschi, Bernd Freisleben, and Mira Mezini. Fault-tolerant Distributed Reactive Programming. In 32nd European Conference on Object-Oriented Programming (ECOOP 2018). Leibniz International Proceedings in Informatics (LIPIcs), Volume 109, pp. 1:1-1:26, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2018)


In this paper, we present a holistic approach to provide fault tolerance for distributed reactive programming. Our solution automatically stores and recovers program state to handle crashes, automatically updates and shares distributed parts of the state to provide eventual consistency, and handles errors in a fine-grained manner to allow precise manual control when necessary. By making use of the reactive programming paradigm, we provide these mechanisms without changing the behavior of existing programs and with reasonable performance, as indicated by our experimental evaluation.

Subject Classification

ACM Subject Classification
  • Software and its engineering → Software fault tolerance
  • Software and its engineering → Data flow languages
  • reactive programming
  • distributed systems
  • CRDTs
  • snapshots
  • restoration
  • error handling
  • fault tolerance


  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    PDF Downloads


  1. Akka documentation, 2017. URL: http://akka.io/docs.
  2. Flink success stories, 2017. URL: https://cwiki.apache.org/confluence/display/FLINK/Powered+by+Flink.
  3. HTML5 localStorage, 2017. URL: https://www.w3schools.com/html/html5_webstorage.asp.
  4. Java microbenchmark harness, 2017. URL: http://openjdk.java.net/projects/code-tools/jmh/.
  5. Mehdi Ahmed-Nacer, Claudia-Lavinia Ignat, Gérald Oster, Hyun-Gul Roh, and Pascal Urso. Evaluating CRDTs for Real-time Document Editing. In Proceedings of the 11th ACM Symposium on Document Engineering, DocEng '11, 2011. URL: http://dx.doi.org/10.1145/2034691.2034717.
  6. Alexander Alexandrov, Rico Bergmann, Stephan Ewen, Johann-Christoph Freytag, Fabian Hueske, Arvid Heise, Odej Kao, Marcus Leich, Ulf Leser, Volker Markl, Felix Naumann, Mathias Peters, Astrid Rheinländer, Matthias J. Sax, Sebastian Schelter, Mareike Höger, Kostas Tzoumas, and Daniel Warneke. The Stratosphere Platform for Big Data Analytics. The VLDB Journal, 23, 2014. URL: http://dx.doi.org/10.1007/s00778-014-0357-y.
  7. Joe Armstrong. Erlang. Communications of the ACM, 53, 2010. URL: http://dx.doi.org/10.1145/1810891.1810910.
  8. Engineer Bainomugisha, Andoni Lombide Carreton, Tom van Cutsem, Stijn Mostinckx, and Wolfgang de Meuter. A Survey on Reactive Programming. ACM Computing Survey, 45(4), 2013. URL: http://dx.doi.org/10.1145/2501654.2501666.
  9. P. Bernstein, Sergey Bykov, Alan Geller, Gabriel Kliot, and Jorgen Thelin. Orleans: Distributed Virtual Actors for Programmability and Scalability. Technical report, (MSR-TR-2014-41, 24), 2014. URL: http://aka.ms/Ykyqft.
  10. Sebastian Burckhardt, Manuel Fähndrich, Daan Leijen, and Benjamin P. Wood. Cloud Types for Eventual Consistency. In European Conference on Object-Oriented Programming (ECOOP), 2012. Google Scholar
  11. Andoni Lombide Carreton, Stijn Mostinckx, Tom Van Cutsem, and Wolfgang De Meuter. Loosely-coupled Distributed Reactive Programming in Mobile Ad Hoc Networks. In Proceedings of the 48th International Conference on Objects, Models, Components, Patterns, TOOLS'10, 2010. URL: http://dl.acm.org/citation.cfm?id=1894386.1894389.
  12. Adam Chlipala. Ur/Web: A Simple Model for Programming the Web. In Proceedings of the 42nd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL '15, 2015. URL: http://dx.doi.org/10.1145/2676726.2677004.
  13. Gregory H. Cooper and Shriram Krishnamurthi. Embedding Dynamic Dataflow in a Call-by-value Language. In Proceedings of the 15th European Conference on Programming Languages and Systems, ESOP, 2006. URL: http://dx.doi.org/10.1007/11693024_20.
  14. Evan Czaplicki and Stephen Chong. Asynchronous Functional Reactive Programming for GUIs. In Proceedings of the 34th ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI, 2013. URL: http://dx.doi.org/10.1145/2491956.2462161.
  15. Joscha Drechsler, Guido Salvaneschi, Ragnar Mogk, and Mira Mezini. Distributed REScala: An Update Algorithm for Distributed Reactive Programming. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages &Applications, OOPSLA, 2014. URL: http://dx.doi.org/10.1145/2660193.2660240.
  16. Jan Dzik, Nick Palladinos, Konstantinos Rontogiannis, Eirik Tsarpalis, and Nikolaos Vathis. MBrace: Cloud Computing with Monads. Proceedings of the Seventh Workshop on Programming Languages and Operating Systems, 2013. URL: http://dx.doi.org/10.1145/2525528.2525531.
  17. Jonathan Edwards. Coherent Reaction. In Proceedings of the 24th ACM SIGPLAN Conference Companion on Object Oriented Programming Systems Languages and Applications, OOPSLA, 2009. URL: http://dx.doi.org/10.1145/1639950.1640058.
  18. Conal Elliott and Paul Hudak. Functional Reactive Animation. In Proceedings of the Second ACM SIGPLAN International Conference on Functional Programming, ICFP, 1997. URL: http://dx.doi.org/10.1145/258948.258973.
  19. Patrick Th. Eugster, Pascal A. Felber, Rachid Guerraoui, and Anne-Marie Kermarrec. The Many Faces of Publish/Subscribe. ACM Computing Surveys, 35(2), 2003. URL: http://dx.doi.org/10.1145/857076.857078.
  20. Nate Foster, Rob Harrison, Michael J. Freedman, Christopher Monsanto, Jennifer Rexford, Alec Story, and David Walker. Frenetic: A Network Programming Language. In Proceedings of the 16th ACM SIGPLAN international conference on Functional programming, ICFP, 2011. URL: http://dx.doi.org/10.1145/2034773.2034812.
  21. Seth Gilbert and Nancy Lynch. Brewer’s Conjecture and the Feasibility of Consistent, Available, Partition-tolerant Web Services. ACM SIGACT News, 33(2), 2002. URL: http://dx.doi.org/10.1145/564585.564601.
  22. Rachid Guerraoui, Matej Pavlovic, and Dragos-Adrian Seredinschi. Incremental Consistency Guarantees for Replicated Objects. USENIX Symposium on Operating Systems Design and Implementation (OSDI), 2016. URL: http://arxiv.org/abs/1609.02434.
  23. Paul Hudak, Antony Courtney, Henrik Nilsson, and John Peterson. Arrows, Robots, and Functional Reactive Programming. In Lecture Notes in Computer Science, volume 2638, 2003. Google Scholar
  24. Rajesh K. Karmani and Gul Agha. Actors. In Encyclopedia of Parallel Computing. Springer, 2011. URL: http://dx.doi.org/10.1007/978-0-387-09766-4_125.
  25. Jean-Claude Laprie. Dependable Computing: Concepts, Challenges, Directions. International Symposium on Fault-Tolerant Computing, FTCS, 1995. Google Scholar
  26. Jesse Liberty and Paul Betts. Programming Reactive Extensions and LINQ. Apress, 2011. Google Scholar
  27. Ingo Maier and Martin Odersky. Deprecating the Observer Pattern with Scala.react. Technical report, EPFL, 2012. Google Scholar
  28. Alessandro Margara and Guido Salvaneschi. We Have a DREAM: Distributed Reactive Programming with Consistency Guarantees. In Proceedings of the 8th ACM International Conference on Distributed Event-Based Systems, DEBS, 2014. URL: http://dx.doi.org/10.1145/2611286.2611290.
  29. Alessandro Margara and Guido Salvaneschi. On the Semantics of Distributed Reactive Programming: The Cost of Consistency. IEEE Transactions on Software Engineering, 2018. Google Scholar
  30. R. Meier and V. Cahill. Taxonomy of Distributed Event-based Programming Systems. In 22nd International Conference on Distributed Computing Systems Workshops, 2002. URL: http://dx.doi.org/10.1109/ICDCSW.2002.1030833.
  31. Leo A. Meyerovich, Arjun Guha, Jacob Baskin, Gregory H. Cooper, Michael Greenberg, Aleks Bromfield, and Shriram Krishnamurthi. Flapjax: A Programming Language for Ajax Applications. In Proceedings of the 24th ACM SIGPLAN Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA, 2009. URL: http://dx.doi.org/10.1145/1640089.1640091.
  32. Heather Miller, Philipp Haller, Normen Müller, and Jocelyn Boullier. Function Passing: A Model for Typed, Distributed Functional Programming. In Proceedings of the ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software, Onward!, 2016. URL: http://dx.doi.org/10.1145/2986012.2986014.
  33. Mark S. Miller, E. Dean Tribble, and Jonathan Shapiro. Concurrency Among Strangers. In Proc. Int. Symp. on Trustworthy Global Computing. Springer, 2005. URL: http://dx.doi.org/10.1007/11580850_12.
  34. Florian Myter, Tim Coppieters, Christophe Scholliers, and Wolfgang De Meuter. I Now Pronounce You Reactive and Consistent: Handling Distributed and Replicated State in Reactive Programming. In Proceedings of the 3rd International Workshop on Reactive and Event-Based Languages and Systems, REBLS, 2016. URL: http://dx.doi.org/10.1145/3001929.3001930.
  35. Florian Myter, Christophe Scholliers, and Wolfgang De Meuter. Handling Partial Failures in Distributed Reactive Programming. 4th Workshop on Reactive and Event-based Languages &Systems, 2017. Google Scholar
  36. Ryan Newton, Greg Morrisett, and Matt Welsh. The Regiment Macroprogramming System. In 2007 6th International Symposium on Information Processing in Sensor Networks, 2007. URL: http://dx.doi.org/10.1109/IPSN.2007.4379709.
  37. Ivan Perez. Fault Tolerant Functional Reactive Programming. International Conference on Functional Programming (ICFP), 2018. Google Scholar
  38. Peter R. Pietzuch and Jean M. Bacon. Hermes: A Distributed Event-based Middleware Architecture. In Proceedings. 22nd International Conference on Distributed Computing Systems Workshops, 2002. URL: http://dx.doi.org/10.1109/ICDCSW.2002.1030837.
  39. J. Ploski and W. Hasselbring. Exception Handling in an Event-Driven System. In Availability, Reliability and Security. ARES., 2007. URL: http://dx.doi.org/10.1109/ARES.2007.85.
  40. José Proença and Carlos Baquero. Quality-Aware Reactive Programming for the Internet of Things. In Fundamentals of Software Engineering - 7th International Conference, FSEN, 2017. Google Scholar
  41. Bob Reynders, Dominique Devriese, and Frank Piessens. Multi-Tier Functional Reactive Programming for the Web. In Proceedings of the 2014 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming &Software, Onward!, 2014. URL: http://dx.doi.org/10.1145/2661136.2661140.
  42. G. Salvaneschi, S. Proksch, S. Amann, S. Nadi, and M. Mezini. On the Positive Effect of Reactive Programming on Software Comprehension: An Empirical Study. IEEE Transactions on Software Engineering, 43(12), Dec 2017. URL: http://dx.doi.org/10.1109/TSE.2017.2655524.
  43. Guido Salvaneschi, Sven Amann, Sebastian Proksch, and Mira Mezini. An Empirical Study on Program Comprehension with Reactive Programming. In Proceedings of the 22nd ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE, 2014. URL: http://dx.doi.org/10.1145/2635868.2635895.
  44. Guido Salvaneschi, Gerold Hintz, and Mira Mezini. REScala: Bridging Between Object-oriented and Functional Style in Reactive Applications. In Proceedings of the 13th International Conference on Modularity, MODULARITY, 2014. URL: http://dx.doi.org/10.1145/2577080.2577083.
  45. Marc Shapiro, Nuno Pregui, Carlos Baquero, and Marek Zawirski. A Comprehensive Study of Convergent and Commutative Replicated Data Types. Technical report, INRIA, 2011. Google Scholar
  46. Tom Van Cutsem, Elisa Gonzalez Boix, Christophe Scholliers, Andoni Lombide Carreton, Dries Harnie, Kevin Pinte, and Wolfgang De Meuter. AmbientTalk: Programming Responsive Mobile Peer-to-peer Applications with Actors. Computer Languages, Systems & Structures, 40(3-4), 2014. URL: http://dx.doi.org/10.1016/j.cl.2014.05.002.
  47. Tom Van Cutsem, Stijn Mostinckx, Elisa Gonzalez Boix, Jessie Dedecker, and Wolfgang De Meuter. AmbientTalk: Object-oriented Event-driven Programming in Mobile Ad Hoc Networks. Proceedings - International Conference of the Chilean Computer Science Society, SCCC, 2007. URL: http://dx.doi.org/10.1109/SCCC.2007.4396972.
  48. Andreas Voellmy, Hyojoon Kim, and Nick Feamster. Procera: A Language for High-level Reactive Network Control. In Proceedings of the First Workshop on Hot Topics in Software Defined Networks, HotSDN, 2012. URL: http://dx.doi.org/10.1145/2342441.2342451.
  49. Matei Zaharia, Mosharaf Chowdhury, Tathagata Das, Ankur Dave, Justin Ma, Murphy McCauley, Michael J. Franklin, Scott Shenker, and Ion Stoica. Resilient Distributed Datasets: A Fault-tolerant Abstraction for In-memory Cluster Computing. In Proceedings of the 9th USENIX Conference on Networked Systems Design and Implementation, NSDI, 2012. URL: https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final138.pdf.
Questions / Remarks / Feedback

Feedback for Dagstuhl Publishing

Thanks for your feedback!

Feedback submitted

Could not send message

Please try again later or send an E-mail