package com.sleepycat.je.txn;
import com.sleepycat.je.latch.Latch;
import com.sleepycat.je.latch.LatchSupport;
public class TxnManager {
private Latch allTxnLatch;
protected void hook821( EnvironmentImpl env) throws DatabaseException {
allTxnLatch=LatchSupport.makeLatch(DEBUG_NAME,env);
original(env);
}
protected void hook822( EnvironmentImpl env) throws DatabaseException {
if (EnvironmentImpl.getFairLatches()) {
lockManager=new LatchedLockManager(env);
}
else {
original(env);
}
}
/**
* Called when txn is created.
*/
void registerTxn( Txn txn) throws DatabaseException {
allTxnLatch.acquire();
original(txn);
allTxnLatch.release();
}
/**
* Called when txn ends.
*/
void unRegisterTxn( Txn txn, boolean isCommit) throws DatabaseException {
allTxnLatch.acquire();
try {
original(txn,isCommit);
}
finally {
allTxnLatch.release();
}
}
protected long hook823( long firstActive) throws DatabaseException {
allTxnLatch.acquire();
try {
firstActive=original(firstActive);
}
finally {
allTxnLatch.release();
}
return firstActive;
}
}