public class FSHLog extends AbstractFSWAL<Writer>
Modifier and Type | Field and Description |
---|---|
static long |
FIXED_OVERHEAD |
blocksize, closed, conf, coprocessorHost, DEFAULT_SLOW_SYNC_TIME_MS, filenum, fs, highestSyncedTxid, highestUnsyncedTxid, implClassName, listeners, logrollsize, maxLogs, numEntries, ourFiles, prefixPathStr, rollWriterLock, sequenceIdAccounting, shutdown, slowSyncNs, totalLogSize, walArchiveDir, walDir, walFile2Props, walFilePrefix, walFileSuffix
Constructor and Description |
---|
FSHLog(FileSystem fs,
Path root,
java.lang.String logDir,
Configuration conf)
Constructor.
|
FSHLog(FileSystem fs,
Path rootDir,
java.lang.String logDir,
java.lang.String archiveDir,
Configuration conf,
java.util.List<WALActionsListener> listeners,
boolean failIfWALExists,
java.lang.String prefix,
java.lang.String suffix)
Create an edit log at the given
dir location. |
Modifier and Type | Method and Description |
---|---|
protected void |
afterCreatingZigZagLatch()
Used to manufacture race condition reliably.
|
long |
append(RegionInfo hri,
WALKeyImpl key,
WALEdit edits,
boolean inMemstore)
NOTE: This append, at a time that is usually after this call returns, starts an mvcc
transaction by calling 'begin' wherein which we assign this update a sequenceid.
|
protected void |
beforeWaitOnSafePoint() |
protected Writer |
createWriterInstance(Path path)
This method allows subclasses to inject different writers without having to extend other
methods like rollWriter().
|
protected void |
doAppend(Writer writer,
org.apache.hadoop.hbase.regionserver.wal.FSWALEntry entry) |
protected boolean |
doCheckLogLowReplication() |
protected void |
doReplaceWriter(Path oldPath,
Path newPath,
Writer nextWriter) |
protected void |
doShutdown() |
protected long |
getSequenceOnRingBuffer() |
protected org.apache.hadoop.hbase.regionserver.wal.SyncFuture |
publishSyncOnRingBuffer(long sequence) |
void |
sync() |
void |
sync(long txid) |
abortCacheFlush, append, blockOnSync, checkLogLowReplication, close, completeCacheFlush, computeFilename, getCoprocessorHost, getCurrentFileName, getEarliestMemStoreSeqNum, getEarliestMemStoreSeqNum, getFilenum, getFileNumFromFileName, getLogFileSize, getLogFileSizeIfBeingWritten, getNumLogFiles, getNumRolledLogFiles, getPreallocatedEventCount, getSyncFuture, getWALArchivePath, logRollAndSetupWalProps, main, postSync, registerWALActionsListener, requestLogRoll, requestLogRoll, rollWriter, rollWriter, shutdown, stampSequenceIdAndPublishToRingBuffer, startCacheFlush, startCacheFlush, toString, unregisterWALActionsListener, updateStore
public FSHLog(FileSystem fs, Path root, java.lang.String logDir, Configuration conf) throws java.io.IOException
fs
- filesystem handleroot
- path for stored and archived walslogDir
- dir where wals are storedconf
- configuration to usejava.io.IOException
public FSHLog(FileSystem fs, Path rootDir, java.lang.String logDir, java.lang.String archiveDir, Configuration conf, java.util.List<WALActionsListener> listeners, boolean failIfWALExists, java.lang.String prefix, java.lang.String suffix) throws java.io.IOException
dir
location. You should never have to load an
existing log. If there is a log at startup, it should have already been processed and deleted
by the time the WAL object is started up.fs
- filesystem handlerootDir
- path to where logs and oldlogslogDir
- dir where wals are storedarchiveDir
- dir where wals are archivedconf
- configuration to uselisteners
- Listeners on WAL events. Listeners passed here will be registered before we do
anything else; e.g. the Constructor AbstractFSWAL.rollWriter()
.failIfWALExists
- If true IOException will be thrown if files related to this wal already
exist.prefix
- should always be hostname and port in distributed env and it will be URL encoded
before being used. If prefix is null, "wal" will be usedsuffix
- will be url encoded. null is treated as empty. non-empty must start with
org.apache.hadoop.hbase.wal.AbstractFSWALProvider#WAL_FILE_NAME_DELIMITER
java.io.IOException
protected Writer createWriterInstance(Path path) throws java.io.IOException
createWriterInstance
in class AbstractFSWAL<Writer>
java.io.IOException
protected void afterCreatingZigZagLatch()
beforeWaitOnSafePoint()
protected void beforeWaitOnSafePoint()
afterCreatingZigZagLatch()
protected void doAppend(Writer writer, org.apache.hadoop.hbase.regionserver.wal.FSWALEntry entry) throws java.io.IOException
doAppend
in class AbstractFSWAL<Writer>
java.io.IOException
protected void doReplaceWriter(Path oldPath, Path newPath, Writer nextWriter) throws java.io.IOException
doReplaceWriter
in class AbstractFSWAL<Writer>
java.io.IOException
protected void doShutdown() throws java.io.IOException
doShutdown
in class AbstractFSWAL<Writer>
java.io.IOException
public long append(RegionInfo hri, WALKeyImpl key, WALEdit edits, boolean inMemstore) throws java.io.IOException
AbstractFSWAL
walKey
parameter. Be warned that the WriteEntry is not
immediately available on return from this method. It WILL be available subsequent to a sync of
this append; otherwise, you will just have to wait on the WriteEntry to get filled in.append
in class AbstractFSWAL<Writer>
java.io.IOException
protected boolean doCheckLogLowReplication()
doCheckLogLowReplication
in class AbstractFSWAL<Writer>
protected long getSequenceOnRingBuffer()
protected org.apache.hadoop.hbase.regionserver.wal.SyncFuture publishSyncOnRingBuffer(long sequence)
public void sync() throws java.io.IOException
java.io.IOException
public void sync(long txid) throws java.io.IOException
java.io.IOException