Package org.eclipse.emf.cdo.spi.server
Interface InternalLockManager
- All Superinterfaces:
IDurableLockingManager,ILockingManager,org.eclipse.net4j.util.concurrent.IRWLockManager<Object,,IView> org.eclipse.net4j.util.concurrent.IRWOLockManager<Object,IView>
public interface InternalLockManager
extends org.eclipse.net4j.util.concurrent.IRWOLockManager<Object,IView>, ILockingManager
The type of the to-be-locked objects is either
CDOIDAndBranch or CDOID, depending on whether
branching is supported by the repository or not.
The following features are supported in addition to IRWOLockManager:
- Recursive locking
- Distinction between explicit and implicit locking
- Durable locking
- Since:
- 3.0
- Author:
- Eike Stepper
- No Implement
- This interface is not intended to be implemented by clients.
- No Extend
- This interface is not intended to be extended by clients.
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interfaceThe generic lock-manager modification count and optional reservation produced by one operation.static interfaceAn aggregate of per-session reservations for one lock change.static interfaceA selective lock-state query paired with a session sequence baseline.static interfaceA consistent lock-state snapshot for one session.Nested classes/interfaces inherited from interface org.eclipse.emf.cdo.common.lock.IDurableLockingManager
IDurableLockingManager.LockArea, IDurableLockingManager.LockAreaAlreadyExistsException, IDurableLockingManager.LockAreaNotFoundException, IDurableLockingManager.LockGradeNested classes/interfaces inherited from interface org.eclipse.emf.cdo.server.ILockingManager
ILockingManager.DurableViewHandlerNested classes/interfaces inherited from interface org.eclipse.net4j.util.concurrent.IRWLockManager
org.eclipse.net4j.util.concurrent.IRWLockManager.LockTypeNested classes/interfaces inherited from interface org.eclipse.net4j.util.concurrent.IRWOLockManager
org.eclipse.net4j.util.concurrent.IRWOLockManager.LockChange<OBJECT>, org.eclipse.net4j.util.concurrent.IRWOLockManager.LockDeltaHandler<OBJECT,CONTEXT> -
Field Summary
Fields inherited from interface org.eclipse.net4j.util.concurrent.IRWLockManager
NO_WAIT, WAITFields inherited from interface org.eclipse.net4j.util.concurrent.IRWOLockManager
ALL_LOCK_TYPES, ALL_LOCKS, ALL_OBJECTS, NO_TIMEOUT -
Method Summary
Modifier and TypeMethodDescriptionlongchangeLocks(IView view, List<? extends org.eclipse.net4j.util.concurrent.IRWOLockManager.LockChange<Object>> changes, boolean recursive, boolean explicit, org.eclipse.net4j.util.concurrent.IRWOLockManager.LockChange.DeltaHandler<Object, IView> deltaHandler, Consumer<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object, IView>> stateHandler) Applies one ordered set of lock changes under one in-memory write-access scope, then persists explicit durable lock changes after releasing that access.changeLocksWithReservation(IView view, List<? extends org.eclipse.net4j.util.concurrent.IRWOLockManager.LockChange<Object>> changes, boolean recursive, boolean explicit, org.eclipse.net4j.util.concurrent.IRWOLockManager.LockChange.DeltaHandler<Object, IView> deltaHandler, Consumer<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object, IView>> stateHandler) Applies a lock change and returns its exact sequencing reservation together with the generic lock-manager modification count.createLockArea(InternalView view) createLockArea(InternalView view, String lockAreaID) getLockEntryObject(Object key) Deprecated.getLockGrade(Object key) getLockKey(CDOID id) Same as callinggetLockKey(CDOID, CDOBranch)withnullas branch.getLockKey(CDOID id, CDOBranch branch) Returns the lock key for the given ID.getLockKeyBranch(Object key) getLockKeyID(Object key) getLockOwner(String durableLockingID) getLockOwners(Object key, org.eclipse.net4j.util.concurrent.IRWLockManager.LockType... lockTypes) Returns the set of views that own a lock of one of the specified types on the given key.getLockState(Object key) Deprecated.voidgetLockStates(Collection<Object> keys, BiConsumer<Object, org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object, IView>> consumer) voidgetLockStates(Consumer<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object, IView>> consumer) voidlock(boolean explicit, org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type, IView view, Collection<? extends Object> objects, long timeout) Deprecated.longlock(IView view, Collection<? extends Object> objects, org.eclipse.net4j.util.concurrent.IRWLockManager.LockType lockType, int count, long timeout, boolean recursive, boolean explicit, org.eclipse.net4j.util.concurrent.IRWOLockManager.LockDeltaHandler<Object, IView> deltaHandler, Consumer<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object, IView>> stateHandler) longlock(IView context, Collection<? extends Object> objects, org.eclipse.net4j.util.concurrent.IRWLockManager.LockType lockType, int count, long timeout, org.eclipse.net4j.util.concurrent.IRWOLockManager.LockDeltaHandler<Object, IView> deltaHandler, Consumer<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object, IView>> stateHandler) Deprecated.voidlock(org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type, IView context, Object objectToLock, long timeout) Deprecated.voidlock(org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type, IView context, Collection<? extends Object> objectsToLock, long timeout) Deprecated.lock2(boolean explicit, org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type, IView view, Collection<? extends Object> objects, boolean recursive, long timeout) Deprecated.lock2(org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type, IView context, Collection<? extends Object> objectsToLock, long timeout) Deprecated.Deprecated.voidopenView(ISession session, int viewID, boolean readOnly, String durableLockingID, Consumer<IView> viewConsumer, BiConsumer<CDOID, IDurableLockingManager.LockGrade> lockConsumer) voidreserveLockChange(InternalSession[] sessions, boolean forceFull) Reserves a lock-change sequencing position for each open session in the given set.longsetDurableLockingID(InternalView view, String durableLockingID) Changes the durable locking ID of a view and returns the exact lock-change count assigned to the resulting owner remap for that view's session.voidsetLockState(Object key, org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object, IView> lockState) Deprecated.voidsetRepository(InternalRepository repository) snapshotLockStates(InternalSession session) Returns a consistent snapshot of the lock states relevant to a session, paired with that session's exact lock-change sequence baseline.snapshotLockStates(InternalSession session, CDOBranch branch, Collection<CDOID> ids) Returns lock states for the specified query targets with the session's exact lock-change sequence baseline.voidDeprecated.voidunlock(boolean explicit, org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type, IView view, Collection<? extends Object> objects) Deprecated.voidDeprecated.longunlock(IView view, Collection<? extends Object> objects, org.eclipse.net4j.util.concurrent.IRWLockManager.LockType lockType, int count, boolean recursive, boolean explicit, org.eclipse.net4j.util.concurrent.IRWOLockManager.LockDeltaHandler<Object, IView> deltaHandler, Consumer<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object, IView>> stateHandler) longunlock(IView context, Collection<? extends Object> objects, org.eclipse.net4j.util.concurrent.IRWLockManager.LockType lockType, int count, org.eclipse.net4j.util.concurrent.IRWOLockManager.LockDeltaHandler<Object, IView> deltaHandler, Consumer<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object, IView>> stateHandler) Deprecated.voidunlock(org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type, IView context, Collection<? extends Object> objectsToUnlock) Deprecated.Deprecated.unlock2(boolean explicit, org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type, IView view, Collection<? extends Object> objects, boolean recursive) Deprecated.Deprecated.unlock2(IView context, Collection<? extends Object> objectsToUnlock) Deprecated.unlock2(org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type, IView context, Collection<? extends Object> objectsToUnlock) Deprecated.voidMethods inherited from interface org.eclipse.emf.cdo.common.lock.IDurableLockingManager
createLockArea, deleteLockArea, getLockArea, getLockAreasMethods inherited from interface org.eclipse.emf.cdo.server.ILockingManager
addDurableViewHandler, getDurableViewHandlers, removeDurableViewHandlerMethods inherited from interface org.eclipse.net4j.util.concurrent.IRWLockManager
hasLock, hasLockByOthersMethods inherited from interface org.eclipse.net4j.util.concurrent.IRWOLockManager
changeLocks, getModCount
-
Method Details
-
getRepository
InternalRepository getRepository() -
setRepository
-
getLockKey
Same as callinggetLockKey(CDOID, CDOBranch)withnullas branch.- Since:
- 4.25
-
getLockKey
Returns the lock key for the given ID. If the repository supports branching, the returned key is of typeCDOIDAndBranch, otherwise it is of typeCDOID.- Parameters:
id- the ID of the object to be locked.branch- the branch on which the object to be locked resides. May benullto indicate the main branch (for example if the repository does not support branching).- Since:
- 4.0
-
getLockKeyID
- Since:
- 4.0
- See Also:
-
getLockKeyBranch
- Since:
- 4.15
- See Also:
-
getLocks
- Since:
- 4.0
-
lock
long lock(IView view, Collection<? extends Object> objects, org.eclipse.net4j.util.concurrent.IRWLockManager.LockType lockType, int count, long timeout, boolean recursive, boolean explicit, org.eclipse.net4j.util.concurrent.IRWOLockManager.LockDeltaHandler<Object, IView> deltaHandler, Consumer<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object, throws InterruptedException, org.eclipse.net4j.util.concurrent.TimeoutRuntimeExceptionIView>> stateHandler) - Throws:
InterruptedExceptionorg.eclipse.net4j.util.concurrent.TimeoutRuntimeException- Since:
- 4.15
-
unlock
long unlock(IView view, Collection<? extends Object> objects, org.eclipse.net4j.util.concurrent.IRWLockManager.LockType lockType, int count, boolean recursive, boolean explicit, org.eclipse.net4j.util.concurrent.IRWOLockManager.LockDeltaHandler<Object, IView> deltaHandler, Consumer<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object, IView>> stateHandler) - Since:
- 4.15
-
changeLocks
long changeLocks(IView view, List<? extends org.eclipse.net4j.util.concurrent.IRWOLockManager.LockChange<Object>> changes, boolean recursive, boolean explicit, org.eclipse.net4j.util.concurrent.IRWOLockManager.LockChange.DeltaHandler<Object, IView> deltaHandler, Consumer<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object, throws InterruptedException, org.eclipse.net4j.util.concurrent.TimeoutRuntimeExceptionIView>> stateHandler) Applies one ordered set of lock changes under one in-memory write-access scope, then persists explicit durable lock changes after releasing that access.- Parameters:
view- the lock ownerchanges- the ordered lock and unlock requestsrecursive- whether object collections are expanded to their contained objectsexplicit- whether changes must also be persisted for a durable viewdeltaHandler- receives the effective lock-count changesstateHandler- receives the final state of affected objects- Returns:
- the generic lock-manager modification count
- Throws:
InterruptedException- if a requested lock wait is interruptedorg.eclipse.net4j.util.concurrent.TimeoutRuntimeException- if a requested lock cannot be acquired before its timeout- Since:
- 4.27
-
changeLocksWithReservation
InternalLockManager.LockChangeOperationResult changeLocksWithReservation(IView view, List<? extends org.eclipse.net4j.util.concurrent.IRWOLockManager.LockChange<Object>> changes, boolean recursive, boolean explicit, org.eclipse.net4j.util.concurrent.IRWOLockManager.LockChange.DeltaHandler<Object, IView> deltaHandler, Consumer<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object, throws InterruptedException, org.eclipse.net4j.util.concurrent.TimeoutRuntimeExceptionIView>> stateHandler) Applies a lock change and returns its exact sequencing reservation together with the generic lock-manager modification count.- Parameters:
view- the lock ownerchanges- the ordered lock and unlock requestsrecursive- whether object collections are expanded to their contained objectsexplicit- whether changes must also be persisted for a durable viewdeltaHandler- receives the effective lock-count changesstateHandler- receives the final state of affected objects- Returns:
- the result for this exact operation
- Throws:
InterruptedException- if a requested lock wait is interruptedorg.eclipse.net4j.util.concurrent.TimeoutRuntimeException- if a requested lock cannot be acquired before its timeout- Since:
- 4.27
-
reserveLockChange
InternalLockManager.LockChangeReservationSet reserveLockChange(InternalSession[] sessions, boolean forceFull) Reserves a lock-change sequencing position for each open session in the given set.- Parameters:
sessions- the sessions that may receive the changeforceFull- whether each resulting notification must contain the full change- Returns:
- an aggregate reservation whose per-session results become available after completion
- Since:
- 4.27
-
setDurableLockingID
Changes the durable locking ID of a view and returns the exact lock-change count assigned to the resulting owner remap for that view's session.- Parameters:
view- the view whose durable locking ID is changeddurableLockingID- the new durable locking ID, ornullto disable durable locking- Returns:
- the exact session lock-change count for the owner remap, or zero if no owner remap occurred
- Since:
- 4.27
-
snapshotLockStates
Returns a consistent snapshot of the lock states relevant to a session, paired with that session's exact lock-change sequence baseline.- Parameters:
session- the session for which relevant lock states are selected- Returns:
- the relevant lock states and their sequence baseline
- Since:
- 4.27
-
snapshotLockStates
InternalLockManager.LockStateQuery snapshotLockStates(InternalSession session, CDOBranch branch, Collection<CDOID> ids) Returns lock states for the specified query targets with the session's exact lock-change sequence baseline. AnullID collection requests all lock states using normal query semantics.- Parameters:
session- the session whose sequence baseline is returnedbranch- the branch used to create lock keysids- the target IDs, ornullto query all lock states- Returns:
- the lock states and matching session sequence baseline
- Since:
- 4.27
-
createLockArea
- Since:
- 4.0
-
createLockArea
- Since:
- 4.1
-
updateLockArea
- Since:
- 4.1
-
openView
void openView(ISession session, int viewID, boolean readOnly, String durableLockingID, Consumer<IView> viewConsumer, BiConsumer<CDOID, IDurableLockingManager.LockGrade> lockConsumer) - Since:
- 4.15
-
getLockGrade
- Since:
- 4.1
- See Also:
-
getLockState
- Since:
- 4.1
- See Also:
-
getLockStates
void getLockStates(Collection<Object> keys, BiConsumer<Object, org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object, IView>> consumer) - Since:
- 4.15
- See Also:
-
getLockStates
void getLockStates(Consumer<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object, IView>> consumer) - Since:
- 4.15
-
getLockOwners
Set<IView> getLockOwners(Object key, org.eclipse.net4j.util.concurrent.IRWLockManager.LockType... lockTypes) Returns the set of views that own a lock of one of the specified types on the given key. If no lock types are specified, all lock types are considered. If no view owns a lock of the specified types, an empty set is returned.- Since:
- 4.25
- See Also:
-
getLockOwner
- Since:
- 4.25
-
reloadLocks
void reloadLocks()- Since:
- 4.1
-
getLockStates
@Deprecated List<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object,IView>> getLockStates()Deprecated. -
setLockState
@Deprecated void setLockState(Object key, org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object, IView> lockState) Deprecated. -
getLockEntryObject
Deprecated. -
lock
@Deprecated void lock(boolean explicit, org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type, IView view, Collection<? extends Object> objects, long timeout) throws InterruptedException Deprecated.- Throws:
InterruptedException
-
lock
@Deprecated void lock(org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type, IView context, Collection<? extends Object> objectsToLock, long timeout) throws InterruptedException Deprecated.- Specified by:
lockin interfaceorg.eclipse.net4j.util.concurrent.IRWLockManager<Object,IView> - Specified by:
lockin interfaceorg.eclipse.net4j.util.concurrent.IRWOLockManager<Object,IView> - Throws:
InterruptedException
-
lock
@Deprecated void lock(org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type, IView context, Object objectToLock, long timeout) throws InterruptedException Deprecated.- Specified by:
lockin interfaceorg.eclipse.net4j.util.concurrent.IRWLockManager<Object,IView> - Specified by:
lockin interfaceorg.eclipse.net4j.util.concurrent.IRWOLockManager<Object,IView> - Throws:
InterruptedException
-
lock2
@Deprecated List<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object,IView>> lock2(boolean explicit, org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type, IView view, Collection<? extends Object> objects, boolean recursive, long timeout) throws InterruptedException Deprecated.- Throws:
InterruptedException
-
lock2
@Deprecated List<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object,IView>> lock2(org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type, IView context, Collection<? extends Object> objectsToLock, long timeout) throws InterruptedException Deprecated.- Specified by:
lock2in interfaceorg.eclipse.net4j.util.concurrent.IRWOLockManager<Object,IView> - Throws:
InterruptedException
-
unlock
@Deprecated void unlock(boolean explicit, org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type, IView view, Collection<? extends Object> objects) Deprecated. -
unlock
Deprecated. -
unlock
@Deprecated void unlock(org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type, IView context, Collection<? extends Object> objectsToUnlock) Deprecated. -
unlock
Deprecated. -
unlock2
@Deprecated List<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object,IView>> unlock2(boolean explicit, IView view) Deprecated. -
unlock2
@Deprecated List<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object,IView>> unlock2(boolean explicit, org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type, IView view, Collection<? extends Object> objects, boolean recursive) Deprecated. -
unlock2
@Deprecated List<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object,IView>> unlock2(org.eclipse.net4j.util.concurrent.IRWLockManager.LockType type, IView context, Collection<? extends Object> objectsToUnlock) Deprecated. -
unlock2
@Deprecated List<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object,IView>> unlock2(IView context, Collection<? extends Object> objectsToUnlock) Deprecated. -
unlock2
@Deprecated List<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object,IView>> unlock2(IView context) Deprecated. -
lock
@Deprecated long lock(IView context, Collection<? extends Object> objects, org.eclipse.net4j.util.concurrent.IRWLockManager.LockType lockType, int count, long timeout, org.eclipse.net4j.util.concurrent.IRWOLockManager.LockDeltaHandler<Object, IView> deltaHandler, Consumer<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object, throws InterruptedException, org.eclipse.net4j.util.concurrent.TimeoutRuntimeExceptionIView>> stateHandler) Deprecated.- Specified by:
lockin interfaceorg.eclipse.net4j.util.concurrent.IRWOLockManager<Object,IView> - Throws:
InterruptedExceptionorg.eclipse.net4j.util.concurrent.TimeoutRuntimeException
-
unlock
@Deprecated long unlock(IView context, Collection<? extends Object> objects, org.eclipse.net4j.util.concurrent.IRWLockManager.LockType lockType, int count, org.eclipse.net4j.util.concurrent.IRWOLockManager.LockDeltaHandler<Object, IView> deltaHandler, Consumer<org.eclipse.net4j.util.concurrent.RWOLockManager.LockState<Object, IView>> stateHandler) Deprecated. -
openView
Deprecated.
-