Class FileTxnSnapLog
- java.lang.Object
-
- org.apache.zookeeper.server.persistence.FileTxnSnapLog
-
public class FileTxnSnapLog extends java.lang.Object
This is a helper class above the implementations of txnlog and snapshot classes
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
FileTxnSnapLog.DatadirException
static class
FileTxnSnapLog.LogDirContentCheckException
static interface
FileTxnSnapLog.PlayBackListener
This listener helps the external apis calling restore to gather information while the data is being restored.static class
FileTxnSnapLog.SnapDirContentCheckException
-
Constructor Summary
Constructors Constructor Description FileTxnSnapLog(java.io.File dataDir, java.io.File snapDir)
the constructor which takes the datadir and snapdir.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
append(Request si)
append the request to the transaction logsvoid
close()
close the transaction log filesvoid
commit()
commit the transaction of logslong
fastForwardFromEdits(DataTree dt, java.util.Map<java.lang.Long,java.lang.Integer> sessions, FileTxnSnapLog.PlayBackListener listener)
This function will fast forward the server database to have the latest transactions in it.java.io.File
findMostRecentSnapshot()
the most recent snapshot in the snapshot directoryjava.util.List<java.io.File>
findNRecentSnapshots(int n)
the n most recent snapshotsjava.io.File
getDataDir()
get the datadir used by this filetxn snap loglong
getLastLoggedZxid()
the last logged zxid on the transaction logsjava.io.File
getSnapDir()
get the snap dir used by this filetxn snap logjava.io.File[]
getSnapshotLogs(long zxid)
get the snapshot logs which may contain transactions newer than the given zxid.void
processTransaction(TxnHeader hdr, DataTree dt, java.util.Map<java.lang.Long,java.lang.Integer> sessions, org.apache.jute.Record txn)
process the transaction on the datatreelong
restore(DataTree dt, java.util.Map<java.lang.Long,java.lang.Integer> sessions, FileTxnSnapLog.PlayBackListener listener)
this function restores the server database after reading from the snapshots and transaction logsvoid
rollLog()
roll the transaction logsvoid
save(DataTree dataTree, java.util.concurrent.ConcurrentHashMap<java.lang.Long,java.lang.Integer> sessionsWithTimeouts)
save the datatree and the sessions into a snapshotvoid
setServerStats(ServerStats serverStats)
boolean
truncateLog(long zxid)
truncate the transaction logs the zxid specified
-
-
-
Field Detail
-
VERSION
public static final int VERSION
- See Also:
- Constant Field Values
-
version
public static final java.lang.String version
- See Also:
- Constant Field Values
-
-
Method Detail
-
setServerStats
public void setServerStats(ServerStats serverStats)
-
getDataDir
public java.io.File getDataDir()
get the datadir used by this filetxn snap log- Returns:
- the data dir
-
getSnapDir
public java.io.File getSnapDir()
get the snap dir used by this filetxn snap log- Returns:
- the snap dir
-
restore
public long restore(DataTree dt, java.util.Map<java.lang.Long,java.lang.Integer> sessions, FileTxnSnapLog.PlayBackListener listener) throws java.io.IOException
this function restores the server database after reading from the snapshots and transaction logs- Parameters:
dt
- the datatree to be restoredsessions
- the sessions to be restoredlistener
- the playback listener to run on the database restoration- Returns:
- the highest zxid restored
- Throws:
java.io.IOException
-
fastForwardFromEdits
public long fastForwardFromEdits(DataTree dt, java.util.Map<java.lang.Long,java.lang.Integer> sessions, FileTxnSnapLog.PlayBackListener listener) throws java.io.IOException
This function will fast forward the server database to have the latest transactions in it. This is the same as restore, but only reads from the transaction logs and not restores from a snapshot.- Parameters:
dt
- the datatree to write transactions to.sessions
- the sessions to be restored.listener
- the playback listener to run on the database transactions.- Returns:
- the highest zxid restored.
- Throws:
java.io.IOException
-
processTransaction
public void processTransaction(TxnHeader hdr, DataTree dt, java.util.Map<java.lang.Long,java.lang.Integer> sessions, org.apache.jute.Record txn) throws KeeperException.NoNodeException
process the transaction on the datatree- Parameters:
hdr
- the hdr of the transactiondt
- the datatree to apply transaction tosessions
- the sessions to be restoredtxn
- the transaction to be applied- Throws:
KeeperException.NoNodeException
-
getLastLoggedZxid
public long getLastLoggedZxid()
the last logged zxid on the transaction logs- Returns:
- the last logged zxid
-
save
public void save(DataTree dataTree, java.util.concurrent.ConcurrentHashMap<java.lang.Long,java.lang.Integer> sessionsWithTimeouts) throws java.io.IOException
save the datatree and the sessions into a snapshot- Parameters:
dataTree
- the datatree to be serialized onto disksessionsWithTimeouts
- the sesssion timeouts to be serialized onto disk- Throws:
java.io.IOException
-
truncateLog
public boolean truncateLog(long zxid) throws java.io.IOException
truncate the transaction logs the zxid specified- Parameters:
zxid
- the zxid to truncate the logs to- Returns:
- true if able to truncate the log, false if not
- Throws:
java.io.IOException
-
findMostRecentSnapshot
public java.io.File findMostRecentSnapshot() throws java.io.IOException
the most recent snapshot in the snapshot directory- Returns:
- the file that contains the most recent snapshot
- Throws:
java.io.IOException
-
findNRecentSnapshots
public java.util.List<java.io.File> findNRecentSnapshots(int n) throws java.io.IOException
the n most recent snapshots- Parameters:
n
- the number of recent snapshots- Returns:
- the list of n most recent snapshots, with the most recent in front
- Throws:
java.io.IOException
-
getSnapshotLogs
public java.io.File[] getSnapshotLogs(long zxid)
get the snapshot logs which may contain transactions newer than the given zxid. This includes logs with starting zxid greater than given zxid, as well as the newest transaction log with starting zxid less than given zxid. The latter log file may contain transactions beyond given zxid.- Parameters:
zxid
- the zxid that contains logs greater than zxid- Returns:
-
append
public boolean append(Request si) throws java.io.IOException
append the request to the transaction logs- Parameters:
si
- the request to be appended returns true iff something appended, otw false- Throws:
java.io.IOException
-
commit
public void commit() throws java.io.IOException
commit the transaction of logs- Throws:
java.io.IOException
-
rollLog
public void rollLog() throws java.io.IOException
roll the transaction logs- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException
close the transaction log files- Throws:
java.io.IOException
-
-