This project concentrates on providing transaction support at the programming language level, integrating cooperative and competitive concurrency, and backward and forward error recovery. When introducing transactions into a concurrent programming language such as Ada, it is important to support concurrency inside a transaction in a natural way. In particular, the concurrency features of the language should not be restricted inside a transaction. We have defined a new transaction model named Open Multithreaded Transactions that fits our needs. Transactional objects accessed from within such a transaction can handle cooperative and competitive concurrency.
Exceptions crossing the transaction border cause the transaction to abort.
An object-oriented framework providing support for open multithreaded transactions has been developed. It makes heavy use of design patterns in order to maximize modularity and flexibility. It supports different locking schemes, different storage devices, different recovery strategies, different logging techniques and different caching techniques. An implementation of this framework for Ada 95 is currently under development. Support for different storage devices and stable storage based on mirroring and replication have already been implemented.