Erlang-Style Error Recovery for Concurrent Objects with Cooperative Scheduling

Re-establishing a safe program state after an error occurred is a known problem. Manually written error-recovery code is both more difficult to test and less often executed than the main code paths, hence errors are prevalent in these parts of a program. This paper proposes a failure model for concurrent objects with cooperative scheduling that automatically re-establishes object invariants after program failures, thereby eliminating the need to manually write this problematic code. The proposed model relies on a number of features of actor-based object-oriented languages, such as asynchronous method calls, co-operative scheduling with explicit synchronization points, and communication via future variables. We show that this approach can be used to implement Erlang-style process linking, and implement a supervision tree as a proof-of-concept.

[1]  Denis Caromel,et al.  A theory of distributed objects - asynchrony, mobility, groups, components , 2005 .

[2]  Parosh Aziz Abdulla,et al.  Advanced Ramsey-Based Büchi Automata Inclusion Testing , 2011, CONCUR.

[3]  Johan Dovland,et al.  Observable behavior of distributed systems: Component reasoning for concurrent objects , 2012, J. Log. Algebraic Methods Program..

[4]  Frank S. de Boer,et al.  A Complete Guide to the Future , 2007, ESOP.

[5]  Frank S. de Boer,et al.  User-defined schedulers for real-time concurrent objects , 2012, Innovations in Systems and Software Engineering.

[6]  Z. Chen Java Card Technology for Smart Cards: Architecture and Programmer''s Guide. The Java Series. Addis , 2000 .

[7]  Steve Vinoski Reliability with Erlang , 2007, IEEE Internet Computing.

[8]  Einar Broch Johnsen,et al.  Modeling Application-Level Management of Virtualized Resources in ABS , 2011, FMCO.

[9]  Joe Armstrong,et al.  Programming Erlang: Software for a Concurrent World , 1993 .

[10]  Reiner Hähnle,et al.  ABS: A Core Language for Abstract Behavioral Specification , 2010, FMCO.

[11]  Wojciech Mostowski,et al.  Formal Reasoning About Non-atomic Java Card Methods in Dynamic Logic , 2006, FM.

[12]  David Holmes,et al.  Java Concurrency in Practice , 2006 .

[13]  George Candea,et al.  Crash-Only Software , 2003, HotOS.

[14]  Einar Broch Johnsen,et al.  An Asynchronous Communication Model for Distributed Concurrent Objects , 2004, SEFM.

[15]  Brian Campbell,et al.  Amortised Memory Analysis Using the Depth of Data Structures , 2009, ESOP.

[16]  Ivan Lanese,et al.  Controlling Reversibility in Higher-Order Pi , 2011, CONCUR.

[17]  Ivan Lanese,et al.  Fault Model Design Space for Cooperative Concurrency , 2014, ISoLA.

[18]  Frank D. Valencia,et al.  Formal Methods for Components and Objects , 2002, Lecture Notes in Computer Science.

[19]  Bengt Jonsson,et al.  Extracting the process structure of Erlang applications , 2001 .

[20]  Tobias Nipkow,et al.  FM 2006: Formal Methods, 14th International Symposium on Formal Methods, Hamilton, Canada, August 21-27, 2006, Proceedings , 2006, FM.

[21]  Ivan Lanese,et al.  Fault in the Future , 2011, COORDINATION.

[22]  Farhad Arbab,et al.  Coordination Models and Languages , 1998, Adv. Comput..