in mavibot/src/main/java/org/apache/directory/mavibot/btree/AbstractBTree.java [1052:1118]
/*no qualifier*/void createTransactionManager()
{
Runnable readTransactionTask = new Runnable()
{
public void run()
{
try
{
ReadTransaction<K, V> transaction = null;
while ( !Thread.currentThread().isInterrupted() )
{
long timeoutDate = System.currentTimeMillis() - readTimeOut;
long t0 = System.currentTimeMillis();
int nbTxns = 0;
// Loop on all the transactions from the queue
while ( ( transaction = readTransactions.peek() ) != null )
{
nbTxns++;
if ( transaction.isClosed() )
{
// The transaction is already closed, remove it from the queue
readTransactions.poll();
continue;
}
// Check if the transaction has timed out
if ( transaction.getCreationDate() < timeoutDate )
{
transaction.close();
readTransactions.poll();
synchronized ( btreeRevisions )
{
btreeRevisions.remove( transaction.getRevision() );
}
continue;
}
// We need to stop now
break;
}
long t1 = System.currentTimeMillis();
// Wait until we reach the timeout
Thread.sleep( readTimeOut );
}
}
catch ( InterruptedException ie )
{
//System.out.println( "Interrupted" );
}
catch ( Exception e )
{
throw new RuntimeException( e );
}
}
};
readTransactionsThread = new Thread( readTransactionTask );
readTransactionsThread.setDaemon( true );
readTransactionsThread.start();
}