Package org.apache.hadoop.hbase.wal
Class DisabledWALProvider.DisabledWAL
java.lang.Object
org.apache.hadoop.hbase.wal.DisabledWALProvider.DisabledWAL
- All Implemented Interfaces:
Closeable,AutoCloseable,WALFileLengthProvider,WAL
- Enclosing class:
- DisabledWALProvider
-
Nested Class Summary
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final AtomicBooleanprotected final WALCoprocessorHostprotected final List<WALActionsListener>protected final org.apache.hadoop.fs.Path -
Constructor Summary
ConstructorsConstructorDescriptionDisabledWAL(org.apache.hadoop.fs.Path path, org.apache.hadoop.conf.Configuration conf, List<WALActionsListener> listeners) -
Method Summary
Modifier and TypeMethodDescriptionvoidabortCacheFlush(byte[] encodedRegionName) Abort a cache flush.private longappend(RegionInfo info, WALKeyImpl key, WALEdit edits, boolean inMemstore) longappendData(RegionInfo info, WALKeyImpl key, WALEdit edits) Append a set of data edits to the WAL.longappendMarker(RegionInfo info, WALKeyImpl key, WALEdit edits) Append an operational 'meta' event marker edit to the WAL.voidclose()Caller no longer needs any edits from this WAL.voidcompleteCacheFlush(byte[] encodedRegionName, long maxFlushedSeqId) Complete the cache flush.Returns Coprocessor host.longgetEarliestMemStoreSeqNum(byte[] encodedRegionName) Gets the earliest unflushed sequence id in the memstore for the region.longgetEarliestMemStoreSeqNum(byte[] encodedRegionName, byte[] familyName) Gets the earliest unflushed sequence id in the memstore for the store.getLogFileSizeIfBeingWritten(org.apache.hadoop.fs.Path path) voidregisterWALActionsListener(WALActionsListener listener) Registers WALActionsListenerRoll the log writer.rollWriter(boolean force) Roll the log writer.voidshutdown()Stop accepting new writes.startCacheFlush(byte[] encodedRegionName, Map<byte[], Long> flushedFamilyNamesToSeq) startCacheFlush(byte[] encodedRegionName, Set<byte[]> flushedFamilyNames) WAL keeps track of the sequence numbers that are as yet not flushed im memstores in order to be able to do accounting to figure which WALs can be let go.voidsync()Sync what we have in the WAL.voidsync(long txid) Sync the WAL if the txId was not already sync'd.toString()Human readable identifying information about the state of this WAL.booleanUnregisters WALActionsListenervoidupdateStore(byte[] encodedRegionName, byte[] familyName, Long sequenceid, boolean onlyIfGreater) updates the seuence number of a specific store.
-
Field Details
-
listeners
-
path
-
coprocessorHost
-
closed
-
-
Constructor Details
-
DisabledWAL
public DisabledWAL(org.apache.hadoop.fs.Path path, org.apache.hadoop.conf.Configuration conf, List<WALActionsListener> listeners)
-
-
Method Details
-
registerWALActionsListener
Description copied from interface:WALRegisters WALActionsListener- Specified by:
registerWALActionsListenerin interfaceWAL
-
unregisterWALActionsListener
Description copied from interface:WALUnregisters WALActionsListener- Specified by:
unregisterWALActionsListenerin interfaceWAL
-
rollWriter
Description copied from interface:WALRoll the log writer. That is, start writing log messages to a new file. The implementation is synchronized in order to make sure there's one rollWriter running at any given time.- Specified by:
rollWriterin interfaceWAL- Returns:
- If lots of logs, flush the stores of returned regions so next time through we can clean
logs. Returns null if nothing to flush. Names are actual region names as returned by
RegionInfo.getEncodedName()
-
rollWriter
Description copied from interface:WALRoll the log writer. That is, start writing log messages to a new file. The implementation is synchronized in order to make sure there's one rollWriter running at any given time. If true, force creation of a new writer even if no entries have been written to the current writer- Specified by:
rollWriterin interfaceWAL- Returns:
- If lots of logs, flush the stores of returned regions so next time through we can clean
logs. Returns null if nothing to flush. Names are actual region names as returned by
RegionInfo.getEncodedName()
-
shutdown
Description copied from interface:WALStop accepting new writes. If we have unsynced writes still in buffer, sync them. Extant edits are left in place in backing storage to be replayed later. -
close
Description copied from interface:WALCaller no longer needs any edits from this WAL. Implementers are free to reclaim underlying resources after this call; i.e. filesystem based WALs can archive or delete files. -
appendData
Description copied from interface:WALAppend a set of data edits to the WAL. 'Data' here means that the content in the edits will also have transitioned through the memstore. The WAL is not flushed/sync'd after this transaction completes BUT on return this edit must have its region edit/sequence id assigned else it messes up our unification of mvcc and sequenceid. On returnkeywill have the region edit/sequence id filled in.- Specified by:
appendDatain interfaceWAL- Parameters:
info- the regioninfo associated with appendkey- Modified by this call; we add to it this edits region edit/sequence id.edits- Edits to append. MAY CONTAIN NO EDITS for case where we want to get an edit sequence id that is after all currently appended edits.- Returns:
- Returns a 'transaction id' and
keywill have the region edit/sequence id in it. - Throws:
IOException- See Also:
-
appendMarker
Description copied from interface:WALAppend an operational 'meta' event marker edit to the WAL. A marker meta edit could be a FlushDescriptor, a compaction marker, or a region event marker; e.g. region open or region close. The difference between a 'marker' append and a 'data' append as inWAL.appendData(RegionInfo, WALKeyImpl, WALEdit)is that a marker will not have transitioned through the memstore. The WAL is not flushed/sync'd after this transaction completes BUT on return this edit must have its region edit/sequence id assigned else it messes up our unification of mvcc and sequenceid. On returnkeywill have the region edit/sequence id filled in.- Specified by:
appendMarkerin interfaceWAL- Parameters:
info- the regioninfo associated with appendkey- Modified by this call; we add to it this edits region edit/sequence id.edits- Edits to append. MAY CONTAIN NO EDITS for case where we want to get an edit sequence id that is after all currently appended edits.- Returns:
- Returns a 'transaction id' and
keywill have the region edit/sequence id in it. - Throws:
IOException- See Also:
-
append
private long append(RegionInfo info, WALKeyImpl key, WALEdit edits, boolean inMemstore) throws IOException - Throws:
IOException
-
updateStore
public void updateStore(byte[] encodedRegionName, byte[] familyName, Long sequenceid, boolean onlyIfGreater) Description copied from interface:WALupdates the seuence number of a specific store. depending on the flag: replaces current seq number if the given seq id is bigger, or even if it is lower than existing one- Specified by:
updateStorein interfaceWAL
-
sync
Description copied from interface:WALSync what we have in the WAL. -
sync
Description copied from interface:WALSync the WAL if the txId was not already sync'd. -
startCacheFlush
- Specified by:
startCacheFlushin interfaceWAL
-
startCacheFlush
Description copied from interface:WALWAL keeps track of the sequence numbers that are as yet not flushed im memstores in order to be able to do accounting to figure which WALs can be let go. This method tells WAL that some region is about to flush. The flush can be the whole region or for a column family of the region only.Currently, it is expected that the update lock is held for the region; i.e. no concurrent appends while we set up cache flush.
- Specified by:
startCacheFlushin interfaceWALflushedFamilyNames- Families to flush. May be a subset of all families in the region.- Returns:
- Returns
HConstants.NO_SEQNUMif we are flushing the whole region OR if we are flushing a subset of all families but there are no edits in those families not being flushed; in other words, this is effectively same as a flush of all of the region though we were passed a subset of regions. Otherwise, it returns the sequence id of the oldest/lowest outstanding edit. - See Also:
-
completeCacheFlush
Description copied from interface:WALComplete the cache flush.- Specified by:
completeCacheFlushin interfaceWAL- Parameters:
encodedRegionName- Encoded region name.maxFlushedSeqId- The maxFlushedSeqId for this flush. There is no edit in memory that is less that this sequence id.- See Also:
-
abortCacheFlush
Description copied from interface:WALAbort a cache flush. Call if the flush fails. Note that the only recovery for an aborted flush currently is a restart of the regionserver so the snapshot content dropped by the failure gets restored to the memstore.- Specified by:
abortCacheFlushin interfaceWAL- Parameters:
encodedRegionName- Encoded region name.
-
getCoprocessorHost
Description copied from interface:WALReturns Coprocessor host.- Specified by:
getCoprocessorHostin interfaceWAL
-
getEarliestMemStoreSeqNum
Description copied from interface:WALGets the earliest unflushed sequence id in the memstore for the region.- Specified by:
getEarliestMemStoreSeqNumin interfaceWAL- Parameters:
encodedRegionName- The region to get the number for.- Returns:
- The earliest/lowest/oldest sequence id if present, HConstants.NO_SEQNUM if absent.
-
getEarliestMemStoreSeqNum
Description copied from interface:WALGets the earliest unflushed sequence id in the memstore for the store.- Specified by:
getEarliestMemStoreSeqNumin interfaceWAL- Parameters:
encodedRegionName- The region to get the number for.familyName- The family to get the number for.- Returns:
- The earliest/lowest/oldest sequence id if present, HConstants.NO_SEQNUM if absent.
-
toString
Description copied from interface:WALHuman readable identifying information about the state of this WAL. Implementors are encouraged to include information appropriate for debugging. Consumers are advised not to rely on the details of the returned String; it does not have a defined structure. -
getLogFileSizeIfBeingWritten
- Specified by:
getLogFileSizeIfBeingWrittenin interfaceWALFileLengthProvider
-