Class LockManager

java.lang.Object
com.arjuna.ats.arjuna.StateManager
com.arjuna.ats.txoj.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:
  • Field Details

    • defaultRetry

      public static final int defaultRetry
      The default retry value which will be used by setlock if no other value is given.
      See Also:
    • defaultSleepTime

      public static final int defaultSleepTime
      The default timeout value which will be used by setlock if no other value is given. Milliseconds.
      See Also:
    • 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:
    • lockStoreType

      protected String lockStoreType
    • systemKey

      protected String systemKey
    • locksHeld

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

      protected final Object locksHeldLockObject
    • lockStore

      protected LockStore lockStore
    • stateLoaded

      protected boolean stateLoaded
    • hasBeenLocked

      protected boolean hasBeenLocked
    • objectLocked

      protected boolean objectLocked
    • mutex

      protected ReentrantLock mutex
    • conflictManager

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

      protected static final int DOZE_TIME
      See Also:
    • nestedLocking

      protected static final boolean nestedLocking
  • Constructor Details

    • 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 Details

    • 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.
    • type

      public String type()
      Overload StateManager.type()
      Overrides:
      type in class StateManager
    • 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()