blob: d0769511963748db36b350653ba0c13f90ccaf90 [file] [log] [blame]
<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>DefaultMemStore (Apache HBase 4.0.0-alpha-1-SNAPSHOT API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.hadoop.hbase.regionserver, class: DefaultMemStore">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="class-use/DefaultMemStore.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.hadoop.hbase.regionserver</a></div>
<h1 title="Class DefaultMemStore" class="title">Class DefaultMemStore</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance"><a href="AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">org.apache.hadoop.hbase.regionserver.AbstractMemStore</a>
<div class="inheritance">org.apache.hadoop.hbase.regionserver.DefaultMemStore</div>
</div>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/Closeable.html" title="class or interface in java.io" class="external-link">Closeable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/AutoCloseable.html" title="class or interface in java.lang" class="external-link">AutoCloseable</a></code>, <code><a href="MemStore.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStore</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="annotations">@Private
</span><span class="modifiers">public class </span><span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-52">DefaultMemStore</a></span>
<span class="extends-implements">extends <a href="AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></span></div>
<div class="block">The MemStore holds in-memory modifications to the Store. Modifications are <a href="../Cell.html" title="interface in org.apache.hadoop.hbase"><code>Cell</code></a>s. When
asked to flush, current memstore is moved to snapshot and is cleared. We continue to serve edits
out of new memstore and backing snapshot until flusher reports in that the flush succeeded. At
this point we let the snapshot go.
<p>
The MemStore functions should not be called in parallel. Callers should hold write and read
locks. This is done in <a href="HStore.html" title="class in org.apache.hadoop.hbase.regionserver"><code>HStore</code></a>.
</p>
TODO: Adjust size of the memstore when we remove items because they have been deleted. TODO: With
new KVSLS, need to make sure we update HeapSize with difference in KV size.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- =========== FIELD SUMMARY =========== -->
<li>
<section class="field-summary" id="field-summary">
<h2>Field Summary</h2>
<div class="caption"><span>Fields</span></div>
<div class="summary-table three-column-summary">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Field</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color"><code>static final long</code></div>
<div class="col-second even-row-color"><code><a href="#DEEP_OVERHEAD" class="member-name-link">DEEP_OVERHEAD</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
<div class="col-first odd-row-color"><code>static final long</code></div>
<div class="col-second odd-row-color"><code><a href="#FIXED_OVERHEAD" class="member-name-link">FIXED_OVERHEAD</a></code></div>
<div class="col-last odd-row-color">&nbsp;</div>
<div class="col-first even-row-color"><code>private static final org.slf4j.Logger</code></div>
<div class="col-second even-row-color"><code><a href="#LOG" class="member-name-link">LOG</a></code></div>
<div class="col-last even-row-color">&nbsp;</div>
</div>
<div class="inherited-list">
<h3 id="fields-inherited-from-class-org.apache.hadoop.hbase.regionserver.AbstractMemStore">Fields inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></h3>
<code><a href="AbstractMemStore.html#regionServices">regionServices</a>, <a href="AbstractMemStore.html#snapshot">snapshot</a>, <a href="AbstractMemStore.html#snapshotId">snapshotId</a></code></div>
</section>
</li>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<li>
<section class="constructor-summary" id="constructor-summary">
<h2>Constructor Summary</h2>
<div class="caption"><span>Constructors</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Constructor</div>
<div class="table-header col-last">Description</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">DefaultMemStore</a>()</code></div>
<div class="col-last even-row-color">
<div class="block">Default constructor.</div>
</div>
<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(org.apache.hadoop.conf.Configuration,org.apache.hadoop.hbase.CellComparator)" class="member-name-link">DefaultMemStore</a><wbr>(org.apache.hadoop.conf.Configuration&nbsp;conf,
<a href="../CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;c)</code></div>
<div class="col-last odd-row-color">
<div class="block">Constructor.</div>
</div>
<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(org.apache.hadoop.conf.Configuration,org.apache.hadoop.hbase.CellComparator,org.apache.hadoop.hbase.regionserver.RegionServicesForStores)" class="member-name-link">DefaultMemStore</a><wbr>(org.apache.hadoop.conf.Configuration&nbsp;conf,
<a href="../CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;c,
<a href="RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;regionServices)</code></div>
<div class="col-last even-row-color">
<div class="block">Constructor.</div>
</div>
</div>
</section>
</li>
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getFlushableSize()" class="member-name-link">getFlushableSize</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Flush will first clear out the data in snapshot if any (It will take a second flush invocation
to clear the current Cell set).</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>(package private) <a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getNextRow(org.apache.hadoop.hbase.ExtendedCell)" class="member-name-link">getNextRow</a><wbr>(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cell)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getScanners(long)" class="member-name-link">getScanners</a><wbr>(long&nbsp;readPt)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSegments()" class="member-name-link">getSegments</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns an ordered list of segments from most recent to oldest in memstore</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSnapshotSegments()" class="member-name-link">getSnapshotSegments</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected long</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#heapSize()" class="member-name-link">heapSize</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isSloppy()" class="member-name-link">isSloppy</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected long</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#keySize()" class="member-name-link">keySize</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Returns The total size of cells in this memstore.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#main(java.lang.String%5B%5D)" class="member-name-link">main</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>[]&nbsp;args)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
<div class="block">Code to help figure if our approximation of object heap sizes is close enough.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#postUpdate(org.apache.hadoop.hbase.regionserver.MutableSegment)" class="member-name-link">postUpdate</a><wbr>(<a href="MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Issue any post update synchronization and tests</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>long</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#preFlushSeqIDEstimation()" class="member-name-link">preFlushSeqIDEstimation</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">This method is called before the flush is executed.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#preUpdate(org.apache.hadoop.hbase.regionserver.MutableSegment,org.apache.hadoop.hbase.ExtendedCell,org.apache.hadoop.hbase.regionserver.MemStoreSizing)" class="member-name-link">preUpdate</a><wbr>(<a href="MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cell,
<a href="MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Issue any synchronization and test needed before applying the update</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#size()" class="member-name-link">size</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>protected boolean</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#sizeAddedPreOperation()" class="member-name-link">sizeAddedPreOperation</a>()</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#snapshot()" class="member-name-link">snapshot</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Creates a snapshot of the current memstore.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#updateLowestUnflushedSequenceIdInWAL(boolean)" class="member-name-link">updateLowestUnflushedSequenceIdInWAL</a><wbr>(boolean&nbsp;onlyIfMoreRecent)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
<div class="block">Updates the wal with the lowest sequence id (oldest entry) that is still in memory</div>
</div>
</div>
</div>
</div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.apache.hadoop.hbase.regionserver.AbstractMemStore">Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></h3>
<code><a href="AbstractMemStore.html#add(java.lang.Iterable,org.apache.hadoop.hbase.regionserver.MemStoreSizing)">add</a>, <a href="AbstractMemStore.html#add(org.apache.hadoop.hbase.ExtendedCell,org.apache.hadoop.hbase.regionserver.MemStoreSizing)">add</a>, <a href="AbstractMemStore.html#addToScanners(java.util.List,long,java.util.List)">addToScanners</a>, <a href="AbstractMemStore.html#addToScanners(org.apache.hadoop.hbase.regionserver.Segment,long,java.util.List)">addToScanners</a>, <a href="AbstractMemStore.html#clearSnapshot(long)">clearSnapshot</a>, <a href="AbstractMemStore.html#close()">close</a>, <a href="AbstractMemStore.html#doAdd(org.apache.hadoop.hbase.regionserver.MutableSegment,org.apache.hadoop.hbase.ExtendedCell,org.apache.hadoop.hbase.regionserver.MemStoreSizing)">doAdd</a>, <a href="AbstractMemStore.html#doClearSnapShot()">doClearSnapShot</a>, <a href="AbstractMemStore.html#dump(org.slf4j.Logger)">dump</a>, <a href="AbstractMemStore.html#getActive()">getActive</a>, <a href="AbstractMemStore.html#getComparator()">getComparator</a>, <a href="AbstractMemStore.html#getConfiguration()">getConfiguration</a>, <a href="AbstractMemStore.html#getLowest(org.apache.hadoop.hbase.ExtendedCell,org.apache.hadoop.hbase.ExtendedCell)">getLowest</a>, <a href="AbstractMemStore.html#getNextRow(org.apache.hadoop.hbase.ExtendedCell,java.util.NavigableSet)">getNextRow</a>, <a href="AbstractMemStore.html#getSnapshot()">getSnapshot</a>, <a href="AbstractMemStore.html#getSnapshotSize()">getSnapshotSize</a>, <a href="AbstractMemStore.html#resetActive()">resetActive</a>, <a href="AbstractMemStore.html#resetTimeOfOldestEdit()">resetTimeOfOldestEdit</a>, <a href="AbstractMemStore.html#timeOfOldestEdit()">timeOfOldestEdit</a>, <a href="AbstractMemStore.html#toString()">toString</a>, <a href="AbstractMemStore.html#upsert(java.lang.Iterable,long,org.apache.hadoop.hbase.regionserver.MemStoreSizing)">upsert</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
<code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#clone()" title="class or interface in java.lang" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#finalize()" title="class or interface in java.lang" class="external-link">finalize</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
<div class="inherited-list">
<h3 id="methods-inherited-from-class-org.apache.hadoop.hbase.regionserver.MemStore">Methods inherited from interface&nbsp;org.apache.hadoop.hbase.regionserver.<a href="MemStore.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStore</a></h3>
<code><a href="MemStore.html#startReplayingFromWAL()">startReplayingFromWAL</a>, <a href="MemStore.html#stopReplayingFromWAL()">stopReplayingFromWAL</a></code></div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ FIELD DETAIL =========== -->
<li>
<section class="field-details" id="field-detail">
<h2>Field Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="LOG">
<h3>LOG</h3>
<div class="member-signature"><span class="modifiers">private static final</span>&nbsp;<span class="return-type">org.slf4j.Logger</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-54">LOG</a></span></div>
</section>
</li>
<li>
<section class="detail" id="DEEP_OVERHEAD">
<h3>DEEP_OVERHEAD</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-56">DEEP_OVERHEAD</a></span></div>
</section>
</li>
<li>
<section class="detail" id="FIXED_OVERHEAD">
<h3>FIXED_OVERHEAD</h3>
<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-57">FIXED_OVERHEAD</a></span></div>
</section>
</li>
</ul>
</section>
</li>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<li>
<section class="constructor-details" id="constructor-detail">
<h2>Constructor Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="&lt;init&gt;()">
<h3>DefaultMemStore</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-62">DefaultMemStore</a></span>()</div>
<div class="block">Default constructor. Used for tests.</div>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(org.apache.hadoop.conf.Configuration,org.apache.hadoop.hbase.CellComparator)">
<h3>DefaultMemStore</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-70">DefaultMemStore</a></span><wbr><span class="parameters">(org.apache.hadoop.conf.Configuration&nbsp;conf,
<a href="../CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;c)</span></div>
<div class="block">Constructor.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>c</code> - Comparator</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="&lt;init&gt;(org.apache.hadoop.conf.Configuration,org.apache.hadoop.hbase.CellComparator,org.apache.hadoop.hbase.regionserver.RegionServicesForStores)">
<h3>DefaultMemStore</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-78">DefaultMemStore</a></span><wbr><span class="parameters">(org.apache.hadoop.conf.Configuration&nbsp;conf,
<a href="../CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;c,
<a href="RegionServicesForStores.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServicesForStores</a>&nbsp;regionServices)</span></div>
<div class="block">Constructor.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>c</code> - Comparator</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="snapshot()">
<h3>snapshot</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-87">snapshot</a></span>()</div>
<div class="block">Creates a snapshot of the current memstore. Snapshot must be cleared by call to
<a href="AbstractMemStore.html#clearSnapshot(long)"><code>AbstractMemStore.clearSnapshot(long)</code></a></div>
<dl class="notes">
<dt>Returns:</dt>
<dd><a href="MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver"><code>MemStoreSnapshot</code></a></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getFlushableSize()">
<h3>getFlushableSize</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-115">getFlushableSize</a></span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="MemStore.html#getFlushableSize()">MemStore</a></code></span></div>
<div class="block">Flush will first clear out the data in snapshot if any (It will take a second flush invocation
to clear the current Cell set). If snapshot is empty, current Cell set will be flushed.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>On flush, how much memory we will clear.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="keySize()">
<h3>keySize</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-121">keySize</a></span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="AbstractMemStore.html#keySize()">AbstractMemStore</a></code></span></div>
<div class="block">Returns The total size of cells in this memstore. We will not consider cells in the snapshot</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="AbstractMemStore.html#keySize()">keySize</a></code>&nbsp;in class&nbsp;<code><a href="AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="heapSize()">
<h3>heapSize</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-126">heapSize</a></span>()</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="AbstractMemStore.html#heapSize()">heapSize</a></code>&nbsp;in class&nbsp;<code><a href="AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
<dt>Returns:</dt>
<dd>The total heap size of cells in this memstore. We will not consider cells in the
snapshot</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getScanners(long)">
<h3>getScanners</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-131">getScanners</a></span><wbr><span class="parameters">(long&nbsp;readPt)</span>
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<dl class="notes">
<dt>Returns:</dt>
<dd>scanner over the memstore. This might include scanner over the snapshot when one is
present.</dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getSnapshotSegments()">
<h3>getSnapshotSegments</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-143">getSnapshotSegments</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="getSegments()">
<h3>getSegments</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="Segment.html" title="class in org.apache.hadoop.hbase.regionserver">Segment</a>&gt;</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-147">getSegments</a></span>()
throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="AbstractMemStore.html#getSegments()">AbstractMemStore</a></code></span></div>
<div class="block">Returns an ordered list of segments from most recent to oldest in memstore</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="AbstractMemStore.html#getSegments()">getSegments</a></code>&nbsp;in class&nbsp;<code><a href="AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
<dt>Throws:</dt>
<dd><code><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getNextRow(org.apache.hadoop.hbase.ExtendedCell)">
<h3>getNextRow</h3>
<div class="member-signature"><span class="return-type"><a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-159">getNextRow</a></span><wbr><span class="parameters">(<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cell)</span></div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>cell</code> - Find the row that comes after this one. If null, we return the first.</dd>
<dt>Returns:</dt>
<dd>Next row or null if none found.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="updateLowestUnflushedSequenceIdInWAL(boolean)">
<h3>updateLowestUnflushedSequenceIdInWAL</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-164">updateLowestUnflushedSequenceIdInWAL</a></span><wbr><span class="parameters">(boolean&nbsp;onlyIfMoreRecent)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="AbstractMemStore.html#updateLowestUnflushedSequenceIdInWAL(boolean)">AbstractMemStore</a></code></span></div>
<div class="block">Updates the wal with the lowest sequence id (oldest entry) that is still in memory</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="AbstractMemStore.html#updateLowestUnflushedSequenceIdInWAL(boolean)">updateLowestUnflushedSequenceIdInWAL</a></code>&nbsp;in class&nbsp;<code><a href="AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
<dt>Parameters:</dt>
<dd><code>onlyIfMoreRecent</code> - a flag that marks whether to update the sequence id no matter what or
only if it is greater than the previous sequence id</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="preUpdate(org.apache.hadoop.hbase.regionserver.MutableSegment,org.apache.hadoop.hbase.ExtendedCell,org.apache.hadoop.hbase.regionserver.MemStoreSizing)">
<h3>preUpdate</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-168">preUpdate</a></span><wbr><span class="parameters">(<a href="MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive,
<a href="../ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;cell,
<a href="MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="AbstractMemStore.html#preUpdate(org.apache.hadoop.hbase.regionserver.MutableSegment,org.apache.hadoop.hbase.ExtendedCell,org.apache.hadoop.hbase.regionserver.MemStoreSizing)">AbstractMemStore</a></code></span></div>
<div class="block">Issue any synchronization and test needed before applying the update</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="AbstractMemStore.html#preUpdate(org.apache.hadoop.hbase.regionserver.MutableSegment,org.apache.hadoop.hbase.ExtendedCell,org.apache.hadoop.hbase.regionserver.MemStoreSizing)">preUpdate</a></code>&nbsp;in class&nbsp;<code><a href="AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
<dt>Parameters:</dt>
<dd><code>currentActive</code> - the segment to be updated</dd>
<dd><code>cell</code> - the cell to be added</dd>
<dd><code>memstoreSizing</code> - object to accumulate region size changes</dd>
<dt>Returns:</dt>
<dd>true iff can proceed with applying the update</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="postUpdate(org.apache.hadoop.hbase.regionserver.MutableSegment)">
<h3>postUpdate</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-174">postUpdate</a></span><wbr><span class="parameters">(<a href="MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a>&nbsp;currentActive)</span></div>
<div class="block"><span class="descfrm-type-label">Description copied from class:&nbsp;<code><a href="AbstractMemStore.html#postUpdate(org.apache.hadoop.hbase.regionserver.MutableSegment)">AbstractMemStore</a></code></span></div>
<div class="block">Issue any post update synchronization and tests</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="AbstractMemStore.html#postUpdate(org.apache.hadoop.hbase.regionserver.MutableSegment)">postUpdate</a></code>&nbsp;in class&nbsp;<code><a href="AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
<dt>Parameters:</dt>
<dd><code>currentActive</code> - updated segment</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="sizeAddedPreOperation()">
<h3>sizeAddedPreOperation</h3>
<div class="member-signature"><span class="modifiers">protected</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-179">sizeAddedPreOperation</a></span>()</div>
<dl class="notes">
<dt>Specified by:</dt>
<dd><code><a href="AbstractMemStore.html#sizeAddedPreOperation()">sizeAddedPreOperation</a></code>&nbsp;in class&nbsp;<code><a href="AbstractMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">AbstractMemStore</a></code></dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="size()">
<h3>size</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-184">size</a></span>()</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>Total memory occupied by this MemStore. This won't include any size occupied by the
snapshot. We assume the snapshot will get cleared soon. This is not thread safe and the
memstore may be changed while computing its size. It is the responsibility of the
caller to make sure this doesn't happen.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="preFlushSeqIDEstimation()">
<h3>preFlushSeqIDEstimation</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-189">preFlushSeqIDEstimation</a></span>()</div>
<div class="block"><span class="descfrm-type-label">Description copied from interface:&nbsp;<code><a href="MemStore.html#preFlushSeqIDEstimation()">MemStore</a></code></span></div>
<div class="block">This method is called before the flush is executed.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>an estimation (lower bound) of the unflushed sequence id in memstore after the flush is
executed. if memstore will be cleared returns <code>HConstants.NO_SEQNUM</code>.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="isSloppy()">
<h3>isSloppy</h3>
<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-194">isSloppy</a></span>()</div>
</section>
</li>
<li>
<section class="detail" id="main(java.lang.String[])">
<h3>main</h3>
<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name"><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/DefaultMemStore.html#line-205">main</a></span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>[]&nbsp;args)</span></div>
<div class="block">Code to help figure if our approximation of object heap sizes is close enough. See hbase-900.
Fills memstores then waits so user can heap dump and bring up resultant hprof in something like
jprofiler which allows you get 'deep size' on objects.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>args</code> - main args</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2007&#x2013;2020 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>