Tinkertoy Transactions

We describe the design of a transaction facility for a language that supports higher-order functions. We factor transactions into four separable features: persistence, undoability, locking, and threads. Then, relying on function composition, we show how we can put them together again. Our "Tinkertoy" approach towards building transactions enables us to construct a model of concurrent, nested, multi-threaded transactions, as well as other non-traditional models where not all features of transactions are present. Key to our approach is the use of higher-order functions to make transactions first-class. Not only do we get clean composability of transactional features, but also we avoid the need to introduce special control and block-structured constructs as done in more traditional transactional systems. We implemented our design in Standard ML of New Jersey.

[1]  Barbara Liskov,et al.  Guardians and Actions: Linguistic Support for Robust, Distributed Programs , 1983, TOPL.

[2]  Ronald Morrison,et al.  An Approach to Persistent Programming , 1989, Comput. J..

[3]  Laura M. Haas,et al.  Computation and communication in R*: a distributed database manager , 1984, TOCS.

[4]  J. Gregory Morrisett,et al.  Adding threads to Standard ML , 1990 .

[5]  Paul Rovner Extending Modula-2 to Build Large, Integrated Systems , 1986, IEEE Software.

[6]  Maurice Herlihy,et al.  Inheritance of synchronization and recovery properties in Avalon/C++ , 1988, Computer.

[7]  Lily B. Mummert,et al.  Camelot and Avalon: A Distributed Transaction Facility , 1991 .

[8]  Andrew W. Appel,et al.  Debuggable concurrency extensions for standard ML , 1991, PADD '91.

[9]  J. Gregory Morrisett,et al.  Procs and locks: a portable multiprocessing platform for standard ML of New Jersey , 1993, PPOPP '93.

[10]  Stuart M. Wheater,et al.  A Technical Overview of Arjuna: A System for Reliable Distributed Computing , 1988 .

[11]  Jeannette M. Wing,et al.  Persistence+undoability=transactions , 1992, Proceedings of the Twenty-Fifth Hawaii International Conference on System Sciences.

[12]  Samuel P. Harbison,et al.  Modula-3 , 1992 .

[13]  David K. Gifford,et al.  Concurrent compacting garbage collection of a persistent heap , 1993, SOSP '93.

[14]  Bernhard Humm An extended scheduling mechanism for nested transactions , 1993, Proceedings Third International Workshop on Object Orientation in Operating Systems.

[15]  Jonathan Rees,et al.  The scheme of things: the June 1992 meeting , 1992, LIPO.

[16]  Roger L. Haskin,et al.  Recovery management in QuickSilver , 1988, TOCS.

[17]  Daniel P. Friedman,et al.  Constraining control , 1985, POPL.

[18]  E. B. Moss,et al.  Nested Transactions: An Approach to Reliable Distributed Computing , 1985 .

[19]  Mahadev Satyanarayanan,et al.  Lightweight recoverable virtual memory , 1993, SOSP '93.