M.C.Little@newcastle.ac.uk (Mark Little) (08/24/89)
Project Name: Arjuna Project Members (August 1989): Santosh K. Shrivastava (principle investigator and coordinator) Graham D. Parrington Stuart M. Wheater Fariba Hedayati Mark C. Little Shangjie Jin Contacts: Stuart M. Wheater Mark C. Little stuart@uk.ac.newcastle mcl@uk.ac.newcastle Computing Laboratory, University of Newcastle upon Tyne, Newcastle upon Tyne, NE1 7RU, England. Status: Active Environment: Sun-3 workstations Description: Arjuna is an object-oriented programming system that provides a set of tools for the construction of fault-tolerant distributed applications. A prototype version written in C++ has been designed and implemented to run on a collection of Unix workstations connected by a local area network.Arjuna provides nested atomic actions (nested atomic transactions) for structuring application programs. Atomic actions operate on objects, which are instances of abstract data types (C++ classes), by making use of remote procedure calls (RPCs). The design and implementation goal of Arjuna was to provide a state of the art programming system for constructing fault-tolerant distributed applications. In meeting this goal, three system properties were considered highly important: (i) Integration of mechanisms: a fault-tolerant distributed system requires a variety of system functions for naming, locating and invoking operations upon local and remote objects and also for concurrency control, error detection and recovery from failures etc. These mechanisms must be provided in an integrated manner such that their use is easy and natural. (ii) Flexibility: these mechanisms should also be flexible, permitting application specific enhancements, such as type-specific concurrency and recovery control, to be easily produced from existing default ones. (iii) Portability: the system should be easy to install and run on a variety of hardware configurations. The computational model of atomic actions controlling operations upon objects provides a natural framework for incorporating integrated mechanisms for fault- tolerance and distribution. In Arjuna, these mechanisms have been provided through a number of C++ classes; these classes have been organised into a class/ type hierarchy in a manner which will be familiar to the developers of 'traditional' (single node) centralised object-oriented systems. Arjuna is novel with respect to other fault-tolerant distributed systems in taking the approach that every major entity in the system is an object. Thus, Arjuna not only supports an object-oriented model of computation, but its internal structure is also object-oriented. This approach permits the use of the type inheritance mechanism of object-oriented systems for incorporating the properties of fault- tolerance and distribution in a very flexible way, permitting the implementation of concurrency control and recovery for objects in a type specific manner. In this aspect, Arjuna bears some resemblence to the Avalon/C++ system. Also, Arjuna has been implemented without any changes to the underlying operating system (Sun Unix), making it quite portable. Publications: S. K. Shrivastava, G. N. Dixon, G. D. Parrington. Objects and Actions in reliable distributed systems. IEEE Software Eng. Journal, September 1987. F. Panzieri, S. K. Shrivastava. Rajdoot: a remot procedure call mechanism supporting orphan detection and killing. IEEE Trans. on Softwrae Eng. January 1988. G. N. Dixon. Object management for persistence and recoverability PhD Thesis, Technical Report 276, December 1988. G. D. Parrington. Management of concurrency in a reliable object-oriented system. PhD Thesis, Technical Report 277, December 1988. G. N. Dixon, S. K. Shrivastava. Exploiting type inheritance facilities to implement recoverability in object based systems. Proc. of 6th Symp. on Reliability in Distributed Software and Database Systems, Williamsburg, march 1987. G. N. Dixon, S. K. Shrivastava, G. D. Parrington. Managing persistent objects in Arjuna: a system for reliable distributed computing. Proc. of Workshop on persistent object systems, St. Andrews, Aug 1987. S. K. Shrivastava, L. Mancini, B. Randell. On the duality of fault-tolerant system structures. Workshop on experiences with dist. systems, Kaiserslautern, Lecture Notes in Computer Science, Vol 309, Sept. 1987 G. D. Parrington, S. K. Shrivastava. Implementing concurrency control in reliable distributed object-oriented systems. ECOOP88, Lecture Notes in Computer Science, Vol. 322. S.K. Shrivastava, G.N. Dixon, G.D. Parrington, F. Hedayati, S.M. Wheater and M. Little, The Design and Implementation of Arjuna. Technical Report, 1989. G. N. Dixon, G. D. Parrington, S. K. Shrivastava, S. M. Wheater. The treatment of persistent objects in Arjuna. ECOOP89, July 1989 (also, The Computer Journal, Vol. 32, Aug 1989).