org.apache.derby.impl.store.raw.xact
Class RowLocking3Escalate

java.lang.Object
  extended by org.apache.derby.impl.store.raw.xact.NoLocking
      extended by org.apache.derby.impl.store.raw.xact.ContainerLocking3
          extended by org.apache.derby.impl.store.raw.xact.RowLocking3Escalate
All Implemented Interfaces:
LockingPolicy

public class RowLocking3Escalate
extends ContainerLocking3

A locking policy that implements row level locking with isolation degree 3.

See Also:
LockingPolicy

Field Summary
 
Fields inherited from class org.apache.derby.impl.store.raw.xact.ContainerLocking3
lf
 
Fields inherited from interface org.apache.derby.iapi.store.raw.LockingPolicy
MODE_CONTAINER, MODE_NONE, MODE_RECORD
 
Constructor Summary
protected RowLocking3Escalate(LockFactory lf)
           
 
Method Summary
 boolean lockContainer(Transaction t, ContainerHandle container, boolean waitForLock, boolean forUpdate)
          Escalates Row Locking 3 to Container Locking 3.
 
Methods inherited from class org.apache.derby.impl.store.raw.xact.ContainerLocking3
getMode
 
Methods inherited from class org.apache.derby.impl.store.raw.xact.NoLocking
lockRecordForRead, lockRecordForWrite, unlockContainer, unlockRecordAfterRead, zeroDurationLockRecordForWrite
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RowLocking3Escalate

protected RowLocking3Escalate(LockFactory lf)
Method Detail

lockContainer

public boolean lockContainer(Transaction t,
                             ContainerHandle container,
                             boolean waitForLock,
                             boolean forUpdate)
                      throws StandardException
Escalates Row Locking 3 to Container Locking 3.

This call is made by code which tracks the number of locks on a container. When the number of locks exceeds the escalate threshold the caller creates this new locking policy, calls lockContainer(), and substitues it for the old locking policy. The lockContainer call determines which table lock to get (S or X), gets that table lock, and then releases the row locks on the table. It is assumed that this is called on a open container for lock only.

Specified by:
lockContainer in interface LockingPolicy
Overrides:
lockContainer in class ContainerLocking3
Parameters:
t - Transaction to associate lock with.
container - Container to lock.
waitForLock - Ignored - will never wait for a lock.
forUpdate - Ignored, mode determined from current lock state.
Returns:
true if the lock was obtained, false if it wasn't. False should only be returned if the waitForLock policy was set to "false," and the lock was unavailable.
Throws:
StandardException - Standard exception policy.
See Also:
ContainerHandle

Built on Thu 2012-03-29 21:53:33+0000, from revision ???

Apache Derby V10.6 Internals - Copyright © 2004,2007 The Apache Software Foundation. All Rights Reserved.