Class LockManager


  • public class LockManager
    extends StateManager
    This class provides (transactional) concurrency control for application objects.
    Since:
    JTS 1.0.
    Version:
    $Id: LockManager.java 2342 2006-03-30 13:06:17Z $
    Author:
    Mark Little (mark@arjuna.com)
    See Also:
    StateManager
    • Field Detail

      • waitTotalTimeout

        public static final int waitTotalTimeout
        By default, threads which call setlock with conflicting locks will spin for the specified (or default) number of timeout and retry attempts, and then return failure if the lock could not be acquired. If the *retry* period is set to this value, then such threads will sleep for their total wait period and be signalled if the lock is released within this period of time.
        Since:
        JTS 2.1.
        See Also:
        setlock(com.arjuna.ats.txoj.Lock), Constant Field Values
      • lockStoreType

        protected String lockStoreType
      • systemKey

        protected String systemKey
      • locksHeld

        protected com.arjuna.ats.internal.txoj.LockList locksHeld
      • locksHeldLockObject

        protected final Object locksHeldLockObject
      • stateLoaded

        protected boolean stateLoaded
      • hasBeenLocked

        protected boolean hasBeenLocked
      • objectLocked

        protected boolean objectLocked
      • conflictManager

        protected com.arjuna.ats.internal.txoj.LockConflictManager conflictManager
      • nestedLocking

        protected static final boolean nestedLocking
    • Constructor Detail

      • LockManager

        protected LockManager​(Uid storeUid)
      • LockManager

        protected LockManager​(Uid storeUid,
                              int ot)
      • LockManager

        protected LockManager​(Uid storeUid,
                              int ot,
                              int om)
      • LockManager

        protected LockManager()
      • LockManager

        protected LockManager​(int ot)
      • LockManager

        protected LockManager​(int ot,
                              int om)
    • Method Detail

      • finalize

        public void finalize()
                      throws Throwable
        Cleanup. Note we grab the semaphore before destroying the lock store to ensure the store is deleted cleanly.
        Overrides:
        finalize in class Object
        Throws:
        Throwable
      • propagate

        public boolean propagate​(Uid from,
                                 Uid to)
        Change lock ownership as nested action commits. All locks owned by the committing action have their owners changed to be the parent of the committing action. BasicAction ensures this is only called at nested commit. This function works by copying the old LockList pointer and then creating a new held lock list. Locks are then moved from the old to the new, propagating en route.
      • releaseAll

        public final boolean releaseAll​(Uid actionUid)
        Clear out all locks for a given action. Should be triggered automatically at top-level commit but is also user callable so is potentially dangerous.
      • releaselock

        public final boolean releaselock​(Uid lockUid)
        Release a SINGLE LOCK lock that has the given uid. Breaks two-phase locking rules so watch out!
      • setlock

        public final int setlock​(Lock toSet)
      • setlock

        public final int setlock​(Lock toSet,
                                 int retry)
      • setlock

        public int setlock​(Lock toSet,
                           int retry,
                           int sleepTime)
      • print

        public void print​(PrintWriter strm)
        Print information about this instance on the specified PrintWriter.
        Overrides:
        print in class StateManager
      • printState

        public void printState​(PrintWriter strm)
        Load state into object prior to doing the printing.
      • terminate

        protected void terminate()
        This method *must* be called in the finalizer of every object. It ensures that any necessary cleanup work is done in the event that the object goes out of scope within a transaction.
        Overrides:
        terminate in class StateManager
      • cleanUp

        protected final void cleanUp()
      • doRelease

        protected boolean doRelease​(Uid u,
                                    boolean all)
      • freeState

        protected final void freeState()
      • initialise

        protected final boolean initialise()
      • isAncestorOf

        protected final boolean isAncestorOf​(Lock heldLock)
      • loadState

        protected boolean loadState()
      • lockConflict

        protected final int lockConflict​(Lock otherLock)
      • unloadState

        protected final boolean unloadState()