Jakarta Commons Transaction Release 1.1 beta2 --------------------------------------------- RELEASE NUMBER: 1.1b2 RELEASE TAG / BRANCH: TRANSACTION_1_1_B2_RELEASE / none yet DESCRIPTION ----------- Commons Transaction aims at providing utility classes commonly used in transactional Java programming. There are implementations for: - multi level (e.g. read/write) locks, - transactional maps, and - transactional file access, plus - some helper classes GENERAL RELEASE NOTES --------------------- This is the second beta of the Commons Transaction 1.1 feature release. It mainly fixes concurrency bugs not discovered before the first beta and adds test cases that reveal them. Commons Transaction 1.1 aims at polishing (interface) oddities, improving locking and making the file store more flexible. Locking now is much more flexible, extensible and allows for rudimentary transaction management. There is a new lock manager hides locks from the user and keeps track of all of them allowing for deadlock detection and more convenient management. ENHANCEMENTS FROM 1.0 --------------------- Locking: - Extended and less excentric lock manager interface LockManager2 - Extended multi level lock interface MultiLevelLock2 - GenericLock and GenericLockManager now implement new interfaces as well - GenericLock and GenericLockManager offer much better inspection with toString - GenericLock offers (protected) means for waiter management and opens possibility for fair strategies to subclasses File: - Confiburable resource id to path mapping NEW FEATURES FROM 1.0 --------------------- Locking: - new ReadWriteLockManager for most intuitive read/write lock usage - new read/write/upgrade locking mechanism (ReadWriteUpgradeLock, ReadWriteUpgradeLockManager) - Deadlock detection for all lock managers, file store, and pessimistic map - Flexible preference locking mechanism - Global transaction timeouts that actively revoke granted rights from transactions MINOR INCOMPATIBILITIES TO 1.0 ----------------------------------------- - PessimisticMapWrapper now throws the more general LockException from locking package - Both MultiLevelLock#release and LockManager2#release now return a boolean that indicates if the lock really has been released BUGFIXES FROM 1.0 beta1 ----------------------- - Fixed deadlock hazard in deadlock detection caused by interleaving access to locks set of an owner - Fixed timeout that in certain scenarios did not work - GenericLock test method released all locks held by the testing owner - fixed - OptimisticMapWrapper now uses a read/write lock to guarantee no other operations are being executed while commiting; before it was possible that conflicts that arose during the process of committing remained undetected ENHANCEMENTS FROM 1.0 beta1 ----------------------- - Many extensions for information about locks KNOWN ISSUES ------------ - Deadlock detection sometimes determines more than one thread as a deadlock victim