Community
Participate
Working Groups
Aim is to allow user to lock an object and all its eAllContents() with a single call, and without having to load (or triggering the load of) all the children on the client.
Created attachment 203386 [details] Patch v1 SVN patch, not an Eclipse patch.
Created attachment 203400 [details] Patch v2
Patch v2 is also an SVN patch...
Created attachment 203572 [details] Patch v3
Created attachment 203575 [details] Patch v4
LockingManagerTest.testRecursiveLock() fails in all legacy scenarios. Please add syncing on the lock manager in (as discussed on Skype): LockManager.lock2(boolean, LockType, IView, Collection<? extends Object>, boolean, long) LockManager.unlock2(boolean, LockType, IView, Collection<? extends Object>, boolean) Otherwise it looks good ;-)
Oh, and please be so kind to add the recursice methods to CDOLock.
Created attachment 203631 [details] Patch v5 Aborted attempt to introduce CDOObject.cdoRecursiveLock(LockType) It turned out too problematic, because it requires an implementation of isLocked and isLockedByOthers. How would this work for a recursive lock? Presumably the lock would answer on behalf of its entire content tree. But how can it? If the answer is to be computed on the server, then we need a new signal. If the answer it computed locally, then we need to fetch the lockstates for the entire content tree. But what if the content tree changes? That implies that changes to the *data* trigger special notifications to keep these recursive locks up to date... I think that's way too complex, so I'm abandoning this approach.
Created attachment 203649 [details] Patch v6
Committed revision 9193.
Closing.
*** Bug 270393 has been marked as a duplicate of this bug. ***