java.io.Closeable, java.lang.AutoCloseable, Storage.FormatConfirmable, JournalManager@Private public class QuorumJournalManager extends java.lang.Object implements JournalManager
JournalManager.CorruptionException| Modifier and Type | Field | Description |
|---|---|---|
static int |
QJM_RPC_MAX_TXNS_DEFAULT |
|
static java.lang.String |
QJM_RPC_MAX_TXNS_KEY |
| Constructor | Description |
|---|---|
QuorumJournalManager(org.apache.hadoop.conf.Configuration conf,
java.net.URI uri,
NamespaceInfo nsInfo) |
|
QuorumJournalManager(org.apache.hadoop.conf.Configuration conf,
java.net.URI uri,
NamespaceInfo nsInfo,
java.lang.String nameServiceId) |
| Modifier and Type | Method | Description |
|---|---|---|
boolean |
canRollBack(StorageInfo storage,
StorageInfo prevStorage,
int targetLayoutVersion) |
Return true if this JM can roll back to the previous storage state, false
otherwise.
|
static void |
checkJournalId(java.lang.String jid) |
|
void |
close() |
Close the journal manager, freeing any resources it may hold.
|
protected java.util.List<org.apache.hadoop.hdfs.qjournal.client.AsyncLogger> |
createLoggers(org.apache.hadoop.hdfs.qjournal.client.AsyncLogger.Factory factory) |
|
void |
discardSegments(long startTxId) |
Discard the segments whose first txid is >= the given txid.
|
void |
doFinalize() |
Finalize the upgrade.
|
void |
doPreUpgrade() |
Perform any steps that must succeed across all JournalManagers involved in
an upgrade before proceeding onto the actual upgrade stage.
|
void |
doRollback() |
Perform the rollback to the previous FS state.
|
void |
doUpgrade(Storage storage) |
Perform the actual upgrade of the JM.
|
void |
finalizeLogSegment(long firstTxId,
long lastTxId) |
Mark the log segment that spans from firstTxId to lastTxId
as finalized and complete.
|
void |
format(NamespaceInfo nsInfo,
boolean force) |
Format the underlying storage, removing any previously
stored data.
|
long |
getJournalCTime() |
|
boolean |
hasSomeData() |
|
void |
purgeLogsOlderThan(long minTxIdToKeep) |
|
void |
recoverUnfinalizedSegments() |
Recover segments which have not been finalized.
|
void |
selectInputStreams(java.util.Collection<EditLogInputStream> streams,
long fromTxnId,
boolean inProgressOk) |
|
void |
selectInputStreams(java.util.Collection<EditLogInputStream> streams,
long fromTxnId,
boolean inProgressOk,
boolean onlyDurableTxns) |
|
void |
setOutputBufferCapacity(int size) |
Set the amount of memory that this stream should use to buffer edits
|
EditLogOutputStream |
startLogSegment(long txId,
int layoutVersion) |
Begin writing to a new segment of the log stream, which starts at
the given transaction ID.
|
java.lang.String |
toString() |
public static final java.lang.String QJM_RPC_MAX_TXNS_KEY
public static final int QJM_RPC_MAX_TXNS_DEFAULT
@VisibleForTesting
public QuorumJournalManager(org.apache.hadoop.conf.Configuration conf,
java.net.URI uri,
NamespaceInfo nsInfo)
throws java.io.IOException
java.io.IOExceptionpublic QuorumJournalManager(org.apache.hadoop.conf.Configuration conf,
java.net.URI uri,
NamespaceInfo nsInfo,
java.lang.String nameServiceId)
throws java.io.IOException
java.io.IOExceptionprotected java.util.List<org.apache.hadoop.hdfs.qjournal.client.AsyncLogger> createLoggers(org.apache.hadoop.hdfs.qjournal.client.AsyncLogger.Factory factory)
throws java.io.IOException
java.io.IOExceptionpublic static void checkJournalId(java.lang.String jid)
public void format(NamespaceInfo nsInfo, boolean force) throws java.io.IOException
JournalManagerformat in interface JournalManagerjava.io.IOExceptionpublic boolean hasSomeData()
throws java.io.IOException
hasSomeData in interface Storage.FormatConfirmablejava.io.IOException - if the storage cannot be accessed at all.public EditLogOutputStream startLogSegment(long txId, int layoutVersion) throws java.io.IOException
JournalManagerstartLogSegment in interface JournalManagerjava.io.IOExceptionpublic void finalizeLogSegment(long firstTxId,
long lastTxId)
throws java.io.IOException
JournalManagerfinalizeLogSegment in interface JournalManagerjava.io.IOExceptionpublic void setOutputBufferCapacity(int size)
JournalManagersetOutputBufferCapacity in interface JournalManagerpublic void purgeLogsOlderThan(long minTxIdToKeep)
throws java.io.IOException
java.io.IOExceptionpublic void recoverUnfinalizedSegments()
throws java.io.IOException
JournalManagerrecoverUnfinalizedSegments in interface JournalManagerjava.io.IOExceptionpublic void close()
throws java.io.IOException
JournalManagerclose in interface java.lang.AutoCloseableclose in interface java.io.Closeableclose in interface JournalManagerjava.io.IOExceptionpublic void selectInputStreams(java.util.Collection<EditLogInputStream> streams, long fromTxnId, boolean inProgressOk) throws java.io.IOException
java.io.IOExceptionpublic void selectInputStreams(java.util.Collection<EditLogInputStream> streams, long fromTxnId, boolean inProgressOk, boolean onlyDurableTxns) throws java.io.IOException
java.io.IOExceptionpublic java.lang.String toString()
toString in interface Storage.FormatConfirmabletoString in class java.lang.Objectpublic void doPreUpgrade()
throws java.io.IOException
JournalManagerdoPreUpgrade in interface JournalManagerjava.io.IOExceptionpublic void doUpgrade(Storage storage) throws java.io.IOException
JournalManagerdoUpgrade in interface JournalManagerstorage - info about the new upgraded versions.java.io.IOExceptionpublic void doFinalize()
throws java.io.IOException
JournalManagerdoFinalize in interface JournalManagerjava.io.IOExceptionpublic boolean canRollBack(StorageInfo storage, StorageInfo prevStorage, int targetLayoutVersion) throws java.io.IOException
JournalManagercanRollBack in interface JournalManagerstorage - the storage info for the current stateprevStorage - the storage info for the previous (unupgraded) statetargetLayoutVersion - the layout version we intend to roll back tojava.io.IOExceptionpublic void doRollback()
throws java.io.IOException
JournalManagerdoRollback in interface JournalManagerjava.io.IOExceptionpublic void discardSegments(long startTxId)
throws java.io.IOException
JournalManagerdiscardSegments in interface JournalManagerstartTxId - The given txid should be right at the segment boundary,
i.e., it should be the first txid of some segment, if segment corresponding
to the txid exists.java.io.IOExceptionpublic long getJournalCTime()
throws java.io.IOException
getJournalCTime in interface JournalManagerjava.io.IOExceptionCopyright © 2008–2025 Apache Software Foundation. All rights reserved.