| Summary: | Recursive locking (tree locking) | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | [Modeling] EMF | Reporter: | Caspar D. <caspar_d> | ||||||||||||||
| Component: | cdo.core | Assignee: | Caspar D. <caspar_d> | ||||||||||||||
| Status: | CLOSED FIXED | QA Contact: | Eike Stepper <stepper> | ||||||||||||||
| Severity: | enhancement | ||||||||||||||||
| Priority: | P3 | CC: | saulius.tvarijonas, smcduff, stepper | ||||||||||||||
| Version: | 4.1 | Flags: | stepper:
review-
stepper: review+ |
||||||||||||||
| Target Milestone: | --- | ||||||||||||||||
| Hardware: | All | ||||||||||||||||
| OS: | All | ||||||||||||||||
| Whiteboard: | Power to the People | ||||||||||||||||
| Bug Depends on: | 353691 | ||||||||||||||||
| Bug Blocks: | |||||||||||||||||
| Attachments: |
|
||||||||||||||||
|
Description
Caspar D.
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. *** |