public final class TransactionManager
extends java.lang.Object
RecordFile
. The transaction log is either clean, or
in progress. In the latter case, the transaction manager
takes care of a roll forward.
Implementation note: this is a proof-of-concept implementation which hasn't been optimized for speed. For instance, all sorts of streams are created for every transaction.
Modifier and Type | Class and Description |
---|---|
static class |
TransactionManager.BlockIoComparator
INNER CLASS.
|
Modifier and Type | Field and Description |
---|---|
(package private) static int |
DEFAULT_TXNS_IN_LOG
By default, we keep 10 transactions in the log file before
synchronizing it with the main database file.
|
(package private) static java.lang.String |
extension
Extension of a log file.
|
Constructor and Description |
---|
TransactionManager(RecordFile owner)
Instantiates a transaction manager instance.
|
Modifier and Type | Method and Description |
---|---|
(package private) void |
add(BlockIo block)
Indicates the block is part of the transaction.
|
(package private) void |
commit()
Commits the transaction to the log file.
|
(package private) void |
forceClose()
Force closing the file without synchronizing pending transaction data.
|
void |
setMaximumTransactionsInLog(int maxTxns)
Set the maximum number of transactions to record in
the log (and keep in memory) before the log is
synchronized with the main database file.
|
(package private) void |
shutdown()
Shutdowns the transaction manager.
|
(package private) void |
start()
Starts a transaction.
|
void |
synchronizeLog()
Synchronize log file data with the main database file.
|
(package private) void |
synchronizeLogFromDisk()
Use the disk-based transaction log to synchronize the data file.
|
static final int DEFAULT_TXNS_IN_LOG
static final java.lang.String extension
TransactionManager(RecordFile owner) throws java.io.IOException
owner
- the RecordFile instance that owns this transaction mgr.java.io.IOException
public void synchronizeLog() throws java.io.IOException
After this call, the main database file is guaranteed to be consistent and guaranteed to be the only file needed for backup purposes.
java.io.IOException
public void setMaximumTransactionsInLog(int maxTxns) throws java.io.IOException
This method must be called while there are no pending transactions in the log.
java.io.IOException
void start() throws java.io.IOException
java.io.IOException
void add(BlockIo block) throws java.io.IOException
java.io.IOException
void commit() throws java.io.IOException
java.io.IOException
void shutdown() throws java.io.IOException
java.io.IOException
void forceClose() throws java.io.IOException
java.io.IOException
void synchronizeLogFromDisk() throws java.io.IOException
java.io.IOException
Cees de Groot (C) 2000-2001. All rights reserved http://jdbm.sourceforge.net