http://git-wip-us.apache.org/repos/asf/hbase-site/blob/526c7822/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
----------------------------------------------------------------------
diff --git 
a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
 
b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
index e9ec3b0..4504336 100644
--- 
a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
+++ 
b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
@@ -26,85 +26,85 @@
 <span class="sourceLineNo">018</span> */<a name="line.18"></a>
 <span class="sourceLineNo">019</span>package 
org.apache.hadoop.hbase.regionserver;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import java.io.IOException;<a 
name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.io.InterruptedIOException;<a 
name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.net.InetSocketAddress;<a 
name="line.23"></a>
-<span class="sourceLineNo">024</span>import 
java.security.PrivilegedExceptionAction;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.util.ArrayList;<a 
name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.Collection;<a 
name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.Collections;<a 
name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.HashMap;<a 
name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.HashSet;<a 
name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.Iterator;<a 
name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.List;<a 
name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.NavigableSet;<a 
name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.Set;<a 
name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.concurrent.Callable;<a 
name="line.34"></a>
-<span class="sourceLineNo">035</span>import 
java.util.concurrent.CompletionService;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import 
java.util.concurrent.ConcurrentHashMap;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import 
java.util.concurrent.ExecutionException;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import 
java.util.concurrent.ExecutorCompletionService;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.concurrent.Future;<a 
name="line.39"></a>
-<span class="sourceLineNo">040</span>import 
java.util.concurrent.ThreadPoolExecutor;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import 
java.util.concurrent.atomic.AtomicBoolean;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import 
java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.42"></a>
-<span class="sourceLineNo">043</span><a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.commons.logging.Log;<a 
name="line.44"></a>
-<span class="sourceLineNo">045</span>import 
org.apache.commons.logging.LogFactory;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import 
org.apache.hadoop.conf.Configuration;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.fs.FileSystem;<a 
name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.fs.Path;<a 
name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.Cell;<a 
name="line.49"></a>
-<span class="sourceLineNo">050</span>import 
org.apache.hadoop.hbase.CellComparator;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import 
org.apache.hadoop.hbase.CellUtil;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import 
org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import 
org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import 
org.apache.hadoop.hbase.HConstants;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import 
org.apache.hadoop.hbase.HRegionInfo;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import 
org.apache.hadoop.hbase.KeyValue;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import 
org.apache.hadoop.hbase.TableName;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.Tag;<a 
name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.TagType;<a 
name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.TagUtil;<a 
name="line.60"></a>
-<span class="sourceLineNo">061</span>import 
org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import 
org.apache.hadoop.hbase.client.Scan;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import 
org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import 
org.apache.hadoop.hbase.io.compress.Compression;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import 
org.apache.hadoop.hbase.io.crypto.Encryption;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import 
org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import 
org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import 
org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import 
org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import 
org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import 
org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoderImpl;<a 
name="line.71"></a>
-<span class="sourceLineNo">072</span>import 
org.apache.hadoop.hbase.io.hfile.HFileScanner;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import 
org.apache.hadoop.hbase.io.hfile.InvalidHFileException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import 
org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import 
org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import 
org.apache.hadoop.hbase.protobuf.generated.WALProtos.CompactionDescriptor;<a 
name="line.76"></a>
-<span class="sourceLineNo">077</span>import 
org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a 
name="line.77"></a>
-<span class="sourceLineNo">078</span>import 
org.apache.hadoop.hbase.regionserver.compactions.CompactionProgress;<a 
name="line.78"></a>
-<span class="sourceLineNo">079</span>import 
org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;<a 
name="line.79"></a>
-<span class="sourceLineNo">080</span>import 
org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a 
name="line.80"></a>
-<span class="sourceLineNo">081</span>import 
org.apache.hadoop.hbase.regionserver.compactions.OffPeakHours;<a 
name="line.81"></a>
-<span class="sourceLineNo">082</span>import 
org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a 
name="line.82"></a>
-<span class="sourceLineNo">083</span>import 
org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import 
org.apache.hadoop.hbase.security.EncryptionUtil;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import 
org.apache.hadoop.hbase.security.User;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import 
org.apache.hadoop.hbase.util.Bytes;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import 
org.apache.hadoop.hbase.util.ChecksumType;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import 
org.apache.hadoop.hbase.util.ClassSize;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import 
org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import 
org.apache.hadoop.hbase.util.ReflectionUtils;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import 
org.apache.hadoop.util.StringUtils;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import 
org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;<a 
name="line.92"></a>
-<span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>import 
com.google.common.annotations.VisibleForTesting;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import 
com.google.common.base.Preconditions;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import 
com.google.common.collect.ImmutableCollection;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import 
com.google.common.collect.ImmutableList;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.google.common.collect.Lists;<a 
name="line.98"></a>
-<span class="sourceLineNo">099</span>import com.google.common.collect.Sets;<a 
name="line.99"></a>
+<span class="sourceLineNo">021</span>import 
com.google.common.annotations.VisibleForTesting;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import 
com.google.common.base.Preconditions;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import 
com.google.common.collect.ImmutableCollection;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import 
com.google.common.collect.ImmutableList;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import com.google.common.collect.Lists;<a 
name="line.25"></a>
+<span class="sourceLineNo">026</span>import com.google.common.collect.Sets;<a 
name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.io.IOException;<a 
name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.io.InterruptedIOException;<a 
name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.net.InetSocketAddress;<a 
name="line.30"></a>
+<span class="sourceLineNo">031</span>import 
java.security.PrivilegedExceptionAction;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.ArrayList;<a 
name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Collection;<a 
name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Collections;<a 
name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.HashMap;<a 
name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.HashSet;<a 
name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Iterator;<a 
name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.List;<a 
name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.NavigableSet;<a 
name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.Set;<a 
name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.concurrent.Callable;<a 
name="line.41"></a>
+<span class="sourceLineNo">042</span>import 
java.util.concurrent.CompletionService;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import 
java.util.concurrent.ConcurrentHashMap;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import 
java.util.concurrent.ExecutionException;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import 
java.util.concurrent.ExecutorCompletionService;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.Future;<a 
name="line.46"></a>
+<span class="sourceLineNo">047</span>import 
java.util.concurrent.ThreadPoolExecutor;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import 
java.util.concurrent.atomic.AtomicBoolean;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import 
java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.commons.logging.Log;<a 
name="line.51"></a>
+<span class="sourceLineNo">052</span>import 
org.apache.commons.logging.LogFactory;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import 
org.apache.hadoop.conf.Configuration;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.fs.FileSystem;<a 
name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.Path;<a 
name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.Cell;<a 
name="line.56"></a>
+<span class="sourceLineNo">057</span>import 
org.apache.hadoop.hbase.CellComparator;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import 
org.apache.hadoop.hbase.CellUtil;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import 
org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import 
org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import 
org.apache.hadoop.hbase.HConstants;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import 
org.apache.hadoop.hbase.HRegionInfo;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import 
org.apache.hadoop.hbase.KeyValue;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import 
org.apache.hadoop.hbase.TableName;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.Tag;<a 
name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.TagType;<a 
name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.TagUtil;<a 
name="line.67"></a>
+<span class="sourceLineNo">068</span>import 
org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import 
org.apache.hadoop.hbase.client.Scan;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import 
org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import 
org.apache.hadoop.hbase.io.compress.Compression;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import 
org.apache.hadoop.hbase.io.crypto.Encryption;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import 
org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import 
org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import 
org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import 
org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import 
org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import 
org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoderImpl;<a 
name="line.78"></a>
+<span class="sourceLineNo">079</span>import 
org.apache.hadoop.hbase.io.hfile.HFileScanner;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import 
org.apache.hadoop.hbase.io.hfile.InvalidHFileException;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import 
org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import 
org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import 
org.apache.hadoop.hbase.protobuf.generated.WALProtos.CompactionDescriptor;<a 
name="line.83"></a>
+<span class="sourceLineNo">084</span>import 
org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a 
name="line.84"></a>
+<span class="sourceLineNo">085</span>import 
org.apache.hadoop.hbase.regionserver.compactions.CompactionProgress;<a 
name="line.85"></a>
+<span class="sourceLineNo">086</span>import 
org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;<a 
name="line.86"></a>
+<span class="sourceLineNo">087</span>import 
org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a 
name="line.87"></a>
+<span class="sourceLineNo">088</span>import 
org.apache.hadoop.hbase.regionserver.compactions.OffPeakHours;<a 
name="line.88"></a>
+<span class="sourceLineNo">089</span>import 
org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a 
name="line.89"></a>
+<span class="sourceLineNo">090</span>import 
org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import 
org.apache.hadoop.hbase.security.EncryptionUtil;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import 
org.apache.hadoop.hbase.security.User;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import 
org.apache.hadoop.hbase.util.Bytes;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import 
org.apache.hadoop.hbase.util.ChecksumType;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import 
org.apache.hadoop.hbase.util.ClassSize;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import 
org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import 
org.apache.hadoop.hbase.util.ReflectionUtils;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import 
org.apache.hadoop.util.StringUtils;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import 
org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;<a 
name="line.99"></a>
 <span class="sourceLineNo">100</span><a name="line.100"></a>
 <span class="sourceLineNo">101</span>/**<a name="line.101"></a>
 <span class="sourceLineNo">102</span> * A Store holds a column family in a 
Region.  Its a memstore and a set of zero<a name="line.102"></a>
@@ -1644,7 +1644,7 @@
 <span class="sourceLineNo">1636</span>      this.lock.readLock().unlock();<a 
name="line.1636"></a>
 <span class="sourceLineNo">1637</span>    }<a name="line.1637"></a>
 <span class="sourceLineNo">1638</span><a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>    
LOG.debug(getRegionInfo().getEncodedName() + " - "  + getColumnFamilyName()<a 
name="line.1639"></a>
+<span class="sourceLineNo">1639</span>    
LOG.debug(getRegionInfo().getEncodedName() + " - " + getColumnFamilyName()<a 
name="line.1639"></a>
 <span class="sourceLineNo">1640</span>        + ": Initiating " + 
(request.isMajor() ? "major" : "minor") + " compaction"<a name="line.1640"></a>
 <span class="sourceLineNo">1641</span>        + (request.isAllFiles() ? " (all 
files)" : ""));<a name="line.1641"></a>
 <span class="sourceLineNo">1642</span>    
this.region.reportCompactionRequestStart(request.isMajor());<a 
name="line.1642"></a>
@@ -1998,72 +1998,72 @@
 <span class="sourceLineNo">1990</span>  }<a name="line.1990"></a>
 <span class="sourceLineNo">1991</span><a name="line.1991"></a>
 <span class="sourceLineNo">1992</span>  /**<a name="line.1992"></a>
-<span class="sourceLineNo">1993</span>   * Used in tests. TODO: Remove<a 
name="line.1993"></a>
-<span class="sourceLineNo">1994</span>   *<a name="line.1994"></a>
-<span class="sourceLineNo">1995</span>   * Updates the value for the given 
row/family/qualifier. This function will always be seen as<a 
name="line.1995"></a>
-<span class="sourceLineNo">1996</span>   * atomic by other readers because it 
only puts a single KV to memstore. Thus no read/write<a name="line.1996"></a>
-<span class="sourceLineNo">1997</span>   * control necessary.<a 
name="line.1997"></a>
-<span class="sourceLineNo">1998</span>   * @param row row to update<a 
name="line.1998"></a>
-<span class="sourceLineNo">1999</span>   * @param f family to update<a 
name="line.1999"></a>
-<span class="sourceLineNo">2000</span>   * @param qualifier qualifier to 
update<a name="line.2000"></a>
-<span class="sourceLineNo">2001</span>   * @param newValue the new value to 
set into memstore<a name="line.2001"></a>
-<span class="sourceLineNo">2002</span>   * @return memstore size delta<a 
name="line.2002"></a>
-<span class="sourceLineNo">2003</span>   * @throws IOException<a 
name="line.2003"></a>
-<span class="sourceLineNo">2004</span>   */<a name="line.2004"></a>
-<span class="sourceLineNo">2005</span>  public long updateColumnValue(byte [] 
row, byte [] f,<a name="line.2005"></a>
-<span class="sourceLineNo">2006</span>                                byte [] 
qualifier, long newValue)<a name="line.2006"></a>
-<span class="sourceLineNo">2007</span>      throws IOException {<a 
name="line.2007"></a>
-<span class="sourceLineNo">2008</span><a name="line.2008"></a>
-<span class="sourceLineNo">2009</span>    this.lock.readLock().lock();<a 
name="line.2009"></a>
-<span class="sourceLineNo">2010</span>    try {<a name="line.2010"></a>
-<span class="sourceLineNo">2011</span>      long now = 
EnvironmentEdgeManager.currentTime();<a name="line.2011"></a>
-<span class="sourceLineNo">2012</span><a name="line.2012"></a>
-<span class="sourceLineNo">2013</span>      return 
this.memstore.updateColumnValue(row,<a name="line.2013"></a>
-<span class="sourceLineNo">2014</span>          f,<a name="line.2014"></a>
-<span class="sourceLineNo">2015</span>          qualifier,<a 
name="line.2015"></a>
-<span class="sourceLineNo">2016</span>          newValue,<a 
name="line.2016"></a>
-<span class="sourceLineNo">2017</span>          now);<a name="line.2017"></a>
-<span class="sourceLineNo">2018</span><a name="line.2018"></a>
-<span class="sourceLineNo">2019</span>    } finally {<a name="line.2019"></a>
-<span class="sourceLineNo">2020</span>      this.lock.readLock().unlock();<a 
name="line.2020"></a>
-<span class="sourceLineNo">2021</span>    }<a name="line.2021"></a>
-<span class="sourceLineNo">2022</span>  }<a name="line.2022"></a>
-<span class="sourceLineNo">2023</span><a name="line.2023"></a>
-<span class="sourceLineNo">2024</span>  @Override<a name="line.2024"></a>
-<span class="sourceLineNo">2025</span>  public long 
upsert(Iterable&lt;Cell&gt; cells, long readpoint) throws IOException {<a 
name="line.2025"></a>
-<span class="sourceLineNo">2026</span>    this.lock.readLock().lock();<a 
name="line.2026"></a>
-<span class="sourceLineNo">2027</span>    try {<a name="line.2027"></a>
-<span class="sourceLineNo">2028</span>      return this.memstore.upsert(cells, 
readpoint);<a name="line.2028"></a>
-<span class="sourceLineNo">2029</span>    } finally {<a name="line.2029"></a>
-<span class="sourceLineNo">2030</span>      this.lock.readLock().unlock();<a 
name="line.2030"></a>
-<span class="sourceLineNo">2031</span>    }<a name="line.2031"></a>
-<span class="sourceLineNo">2032</span>  }<a name="line.2032"></a>
-<span class="sourceLineNo">2033</span><a name="line.2033"></a>
-<span class="sourceLineNo">2034</span>  @Override<a name="line.2034"></a>
-<span class="sourceLineNo">2035</span>  public StoreFlushContext 
createFlushContext(long cacheFlushId) {<a name="line.2035"></a>
-<span class="sourceLineNo">2036</span>    return new 
StoreFlusherImpl(cacheFlushId);<a name="line.2036"></a>
-<span class="sourceLineNo">2037</span>  }<a name="line.2037"></a>
-<span class="sourceLineNo">2038</span><a name="line.2038"></a>
-<span class="sourceLineNo">2039</span>  private final class StoreFlusherImpl 
implements StoreFlushContext {<a name="line.2039"></a>
-<span class="sourceLineNo">2040</span><a name="line.2040"></a>
-<span class="sourceLineNo">2041</span>    private long cacheFlushSeqNum;<a 
name="line.2041"></a>
-<span class="sourceLineNo">2042</span>    private MemStoreSnapshot snapshot;<a 
name="line.2042"></a>
-<span class="sourceLineNo">2043</span>    private List&lt;Path&gt; 
tempFiles;<a name="line.2043"></a>
-<span class="sourceLineNo">2044</span>    private List&lt;Path&gt; 
committedFiles;<a name="line.2044"></a>
-<span class="sourceLineNo">2045</span>    private long cacheFlushCount;<a 
name="line.2045"></a>
-<span class="sourceLineNo">2046</span>    private long cacheFlushSize;<a 
name="line.2046"></a>
-<span class="sourceLineNo">2047</span><a name="line.2047"></a>
-<span class="sourceLineNo">2048</span>    private StoreFlusherImpl(long 
cacheFlushSeqNum) {<a name="line.2048"></a>
-<span class="sourceLineNo">2049</span>      this.cacheFlushSeqNum = 
cacheFlushSeqNum;<a name="line.2049"></a>
-<span class="sourceLineNo">2050</span>    }<a name="line.2050"></a>
-<span class="sourceLineNo">2051</span><a name="line.2051"></a>
-<span class="sourceLineNo">2052</span>    /**<a name="line.2052"></a>
-<span class="sourceLineNo">2053</span>     * This is not thread safe. The 
caller should have a lock on the region or the store.<a name="line.2053"></a>
-<span class="sourceLineNo">2054</span>     * If necessary, the lock can be 
added with the patch provided in HBASE-10087<a name="line.2054"></a>
-<span class="sourceLineNo">2055</span>     */<a name="line.2055"></a>
-<span class="sourceLineNo">2056</span>    @Override<a name="line.2056"></a>
-<span class="sourceLineNo">2057</span>    public void prepare() {<a 
name="line.2057"></a>
-<span class="sourceLineNo">2058</span>      this.snapshot = 
memstore.snapshot();<a name="line.2058"></a>
+<span class="sourceLineNo">1993</span>   * Updates the value for the given 
row/family/qualifier. This function will always be seen as<a 
name="line.1993"></a>
+<span class="sourceLineNo">1994</span>   * atomic by other readers because it 
only puts a single KV to memstore. Thus no read/write<a name="line.1994"></a>
+<span class="sourceLineNo">1995</span>   * control necessary.<a 
name="line.1995"></a>
+<span class="sourceLineNo">1996</span>   * @param row row to update<a 
name="line.1996"></a>
+<span class="sourceLineNo">1997</span>   * @param f family to update<a 
name="line.1997"></a>
+<span class="sourceLineNo">1998</span>   * @param qualifier qualifier to 
update<a name="line.1998"></a>
+<span class="sourceLineNo">1999</span>   * @param newValue the new value to 
set into memstore<a name="line.1999"></a>
+<span class="sourceLineNo">2000</span>   * @return memstore size delta<a 
name="line.2000"></a>
+<span class="sourceLineNo">2001</span>   * @throws IOException<a 
name="line.2001"></a>
+<span class="sourceLineNo">2002</span>   */<a name="line.2002"></a>
+<span class="sourceLineNo">2003</span>  @VisibleForTesting<a 
name="line.2003"></a>
+<span class="sourceLineNo">2004</span>  public long updateColumnValue(byte [] 
row, byte [] f,<a name="line.2004"></a>
+<span class="sourceLineNo">2005</span>                                byte [] 
qualifier, long newValue)<a name="line.2005"></a>
+<span class="sourceLineNo">2006</span>      throws IOException {<a 
name="line.2006"></a>
+<span class="sourceLineNo">2007</span><a name="line.2007"></a>
+<span class="sourceLineNo">2008</span>    this.lock.readLock().lock();<a 
name="line.2008"></a>
+<span class="sourceLineNo">2009</span>    try {<a name="line.2009"></a>
+<span class="sourceLineNo">2010</span>      long now = 
EnvironmentEdgeManager.currentTime();<a name="line.2010"></a>
+<span class="sourceLineNo">2011</span><a name="line.2011"></a>
+<span class="sourceLineNo">2012</span>      return 
this.memstore.updateColumnValue(row,<a name="line.2012"></a>
+<span class="sourceLineNo">2013</span>          f,<a name="line.2013"></a>
+<span class="sourceLineNo">2014</span>          qualifier,<a 
name="line.2014"></a>
+<span class="sourceLineNo">2015</span>          newValue,<a 
name="line.2015"></a>
+<span class="sourceLineNo">2016</span>          now);<a name="line.2016"></a>
+<span class="sourceLineNo">2017</span><a name="line.2017"></a>
+<span class="sourceLineNo">2018</span>    } finally {<a name="line.2018"></a>
+<span class="sourceLineNo">2019</span>      this.lock.readLock().unlock();<a 
name="line.2019"></a>
+<span class="sourceLineNo">2020</span>    }<a name="line.2020"></a>
+<span class="sourceLineNo">2021</span>  }<a name="line.2021"></a>
+<span class="sourceLineNo">2022</span><a name="line.2022"></a>
+<span class="sourceLineNo">2023</span>  @Override<a name="line.2023"></a>
+<span class="sourceLineNo">2024</span>  public long 
upsert(Iterable&lt;Cell&gt; cells, long readpoint) throws IOException {<a 
name="line.2024"></a>
+<span class="sourceLineNo">2025</span>    this.lock.readLock().lock();<a 
name="line.2025"></a>
+<span class="sourceLineNo">2026</span>    try {<a name="line.2026"></a>
+<span class="sourceLineNo">2027</span>      return this.memstore.upsert(cells, 
readpoint);<a name="line.2027"></a>
+<span class="sourceLineNo">2028</span>    } finally {<a name="line.2028"></a>
+<span class="sourceLineNo">2029</span>      this.lock.readLock().unlock();<a 
name="line.2029"></a>
+<span class="sourceLineNo">2030</span>    }<a name="line.2030"></a>
+<span class="sourceLineNo">2031</span>  }<a name="line.2031"></a>
+<span class="sourceLineNo">2032</span><a name="line.2032"></a>
+<span class="sourceLineNo">2033</span>  @Override<a name="line.2033"></a>
+<span class="sourceLineNo">2034</span>  public StoreFlushContext 
createFlushContext(long cacheFlushId) {<a name="line.2034"></a>
+<span class="sourceLineNo">2035</span>    return new 
StoreFlusherImpl(cacheFlushId);<a name="line.2035"></a>
+<span class="sourceLineNo">2036</span>  }<a name="line.2036"></a>
+<span class="sourceLineNo">2037</span><a name="line.2037"></a>
+<span class="sourceLineNo">2038</span>  private final class StoreFlusherImpl 
implements StoreFlushContext {<a name="line.2038"></a>
+<span class="sourceLineNo">2039</span><a name="line.2039"></a>
+<span class="sourceLineNo">2040</span>    private long cacheFlushSeqNum;<a 
name="line.2040"></a>
+<span class="sourceLineNo">2041</span>    private MemStoreSnapshot snapshot;<a 
name="line.2041"></a>
+<span class="sourceLineNo">2042</span>    private List&lt;Path&gt; 
tempFiles;<a name="line.2042"></a>
+<span class="sourceLineNo">2043</span>    private List&lt;Path&gt; 
committedFiles;<a name="line.2043"></a>
+<span class="sourceLineNo">2044</span>    private long cacheFlushCount;<a 
name="line.2044"></a>
+<span class="sourceLineNo">2045</span>    private long cacheFlushSize;<a 
name="line.2045"></a>
+<span class="sourceLineNo">2046</span><a name="line.2046"></a>
+<span class="sourceLineNo">2047</span>    private StoreFlusherImpl(long 
cacheFlushSeqNum) {<a name="line.2047"></a>
+<span class="sourceLineNo">2048</span>      this.cacheFlushSeqNum = 
cacheFlushSeqNum;<a name="line.2048"></a>
+<span class="sourceLineNo">2049</span>    }<a name="line.2049"></a>
+<span class="sourceLineNo">2050</span><a name="line.2050"></a>
+<span class="sourceLineNo">2051</span>    /**<a name="line.2051"></a>
+<span class="sourceLineNo">2052</span>     * This is not thread safe. The 
caller should have a lock on the region or the store.<a name="line.2052"></a>
+<span class="sourceLineNo">2053</span>     * If necessary, the lock can be 
added with the patch provided in HBASE-10087<a name="line.2053"></a>
+<span class="sourceLineNo">2054</span>     */<a name="line.2054"></a>
+<span class="sourceLineNo">2055</span>    @Override<a name="line.2055"></a>
+<span class="sourceLineNo">2056</span>    public void prepare() {<a 
name="line.2056"></a>
+<span class="sourceLineNo">2057</span>      // passing the current sequence 
number of the wal - to allow bookkeeping in the memstore<a name="line.2057"></a>
+<span class="sourceLineNo">2058</span>      this.snapshot = 
memstore.snapshot(cacheFlushSeqNum);<a name="line.2058"></a>
 <span class="sourceLineNo">2059</span>      this.cacheFlushCount = 
snapshot.getCellsCount();<a name="line.2059"></a>
 <span class="sourceLineNo">2060</span>      this.cacheFlushSize = 
snapshot.getSize();<a name="line.2060"></a>
 <span class="sourceLineNo">2061</span>      committedFiles = new 
ArrayList&lt;Path&gt;(1);<a name="line.2061"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/526c7822/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
----------------------------------------------------------------------
diff --git 
a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html 
b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
index e9ec3b0..4504336 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
@@ -26,85 +26,85 @@
 <span class="sourceLineNo">018</span> */<a name="line.18"></a>
 <span class="sourceLineNo">019</span>package 
org.apache.hadoop.hbase.regionserver;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import java.io.IOException;<a 
name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.io.InterruptedIOException;<a 
name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.net.InetSocketAddress;<a 
name="line.23"></a>
-<span class="sourceLineNo">024</span>import 
java.security.PrivilegedExceptionAction;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import java.util.ArrayList;<a 
name="line.25"></a>
-<span class="sourceLineNo">026</span>import java.util.Collection;<a 
name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.util.Collections;<a 
name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.util.HashMap;<a 
name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.util.HashSet;<a 
name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.Iterator;<a 
name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.List;<a 
name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.NavigableSet;<a 
name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.Set;<a 
name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.concurrent.Callable;<a 
name="line.34"></a>
-<span class="sourceLineNo">035</span>import 
java.util.concurrent.CompletionService;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import 
java.util.concurrent.ConcurrentHashMap;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import 
java.util.concurrent.ExecutionException;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import 
java.util.concurrent.ExecutorCompletionService;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.concurrent.Future;<a 
name="line.39"></a>
-<span class="sourceLineNo">040</span>import 
java.util.concurrent.ThreadPoolExecutor;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import 
java.util.concurrent.atomic.AtomicBoolean;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import 
java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.42"></a>
-<span class="sourceLineNo">043</span><a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.commons.logging.Log;<a 
name="line.44"></a>
-<span class="sourceLineNo">045</span>import 
org.apache.commons.logging.LogFactory;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import 
org.apache.hadoop.conf.Configuration;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.fs.FileSystem;<a 
name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.fs.Path;<a 
name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.Cell;<a 
name="line.49"></a>
-<span class="sourceLineNo">050</span>import 
org.apache.hadoop.hbase.CellComparator;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import 
org.apache.hadoop.hbase.CellUtil;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import 
org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import 
org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import 
org.apache.hadoop.hbase.HConstants;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import 
org.apache.hadoop.hbase.HRegionInfo;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import 
org.apache.hadoop.hbase.KeyValue;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import 
org.apache.hadoop.hbase.TableName;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.Tag;<a 
name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.TagType;<a 
name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.TagUtil;<a 
name="line.60"></a>
-<span class="sourceLineNo">061</span>import 
org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import 
org.apache.hadoop.hbase.client.Scan;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import 
org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import 
org.apache.hadoop.hbase.io.compress.Compression;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import 
org.apache.hadoop.hbase.io.crypto.Encryption;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import 
org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import 
org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import 
org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import 
org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import 
org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import 
org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoderImpl;<a 
name="line.71"></a>
-<span class="sourceLineNo">072</span>import 
org.apache.hadoop.hbase.io.hfile.HFileScanner;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import 
org.apache.hadoop.hbase.io.hfile.InvalidHFileException;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import 
org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import 
org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import 
org.apache.hadoop.hbase.protobuf.generated.WALProtos.CompactionDescriptor;<a 
name="line.76"></a>
-<span class="sourceLineNo">077</span>import 
org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a 
name="line.77"></a>
-<span class="sourceLineNo">078</span>import 
org.apache.hadoop.hbase.regionserver.compactions.CompactionProgress;<a 
name="line.78"></a>
-<span class="sourceLineNo">079</span>import 
org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;<a 
name="line.79"></a>
-<span class="sourceLineNo">080</span>import 
org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a 
name="line.80"></a>
-<span class="sourceLineNo">081</span>import 
org.apache.hadoop.hbase.regionserver.compactions.OffPeakHours;<a 
name="line.81"></a>
-<span class="sourceLineNo">082</span>import 
org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a 
name="line.82"></a>
-<span class="sourceLineNo">083</span>import 
org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import 
org.apache.hadoop.hbase.security.EncryptionUtil;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import 
org.apache.hadoop.hbase.security.User;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import 
org.apache.hadoop.hbase.util.Bytes;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import 
org.apache.hadoop.hbase.util.ChecksumType;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import 
org.apache.hadoop.hbase.util.ClassSize;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import 
org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import 
org.apache.hadoop.hbase.util.ReflectionUtils;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import 
org.apache.hadoop.util.StringUtils;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import 
org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;<a 
name="line.92"></a>
-<span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>import 
com.google.common.annotations.VisibleForTesting;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import 
com.google.common.base.Preconditions;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import 
com.google.common.collect.ImmutableCollection;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import 
com.google.common.collect.ImmutableList;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import com.google.common.collect.Lists;<a 
name="line.98"></a>
-<span class="sourceLineNo">099</span>import com.google.common.collect.Sets;<a 
name="line.99"></a>
+<span class="sourceLineNo">021</span>import 
com.google.common.annotations.VisibleForTesting;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import 
com.google.common.base.Preconditions;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import 
com.google.common.collect.ImmutableCollection;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import 
com.google.common.collect.ImmutableList;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import com.google.common.collect.Lists;<a 
name="line.25"></a>
+<span class="sourceLineNo">026</span>import com.google.common.collect.Sets;<a 
name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.io.IOException;<a 
name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.io.InterruptedIOException;<a 
name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.net.InetSocketAddress;<a 
name="line.30"></a>
+<span class="sourceLineNo">031</span>import 
java.security.PrivilegedExceptionAction;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.util.ArrayList;<a 
name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.Collection;<a 
name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Collections;<a 
name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.HashMap;<a 
name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.HashSet;<a 
name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.Iterator;<a 
name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.List;<a 
name="line.38"></a>
+<span class="sourceLineNo">039</span>import java.util.NavigableSet;<a 
name="line.39"></a>
+<span class="sourceLineNo">040</span>import java.util.Set;<a 
name="line.40"></a>
+<span class="sourceLineNo">041</span>import java.util.concurrent.Callable;<a 
name="line.41"></a>
+<span class="sourceLineNo">042</span>import 
java.util.concurrent.CompletionService;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import 
java.util.concurrent.ConcurrentHashMap;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import 
java.util.concurrent.ExecutionException;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import 
java.util.concurrent.ExecutorCompletionService;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import java.util.concurrent.Future;<a 
name="line.46"></a>
+<span class="sourceLineNo">047</span>import 
java.util.concurrent.ThreadPoolExecutor;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import 
java.util.concurrent.atomic.AtomicBoolean;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import 
java.util.concurrent.locks.ReentrantReadWriteLock;<a name="line.49"></a>
+<span class="sourceLineNo">050</span><a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.commons.logging.Log;<a 
name="line.51"></a>
+<span class="sourceLineNo">052</span>import 
org.apache.commons.logging.LogFactory;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import 
org.apache.hadoop.conf.Configuration;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.fs.FileSystem;<a 
name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.Path;<a 
name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.Cell;<a 
name="line.56"></a>
+<span class="sourceLineNo">057</span>import 
org.apache.hadoop.hbase.CellComparator;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import 
org.apache.hadoop.hbase.CellUtil;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import 
org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import 
org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import 
org.apache.hadoop.hbase.HConstants;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import 
org.apache.hadoop.hbase.HRegionInfo;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import 
org.apache.hadoop.hbase.KeyValue;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import 
org.apache.hadoop.hbase.TableName;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.Tag;<a 
name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.TagType;<a 
name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.TagUtil;<a 
name="line.67"></a>
+<span class="sourceLineNo">068</span>import 
org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import 
org.apache.hadoop.hbase.client.Scan;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import 
org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import 
org.apache.hadoop.hbase.io.compress.Compression;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import 
org.apache.hadoop.hbase.io.crypto.Encryption;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import 
org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import 
org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import 
org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import 
org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import 
org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import 
org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoderImpl;<a 
name="line.78"></a>
+<span class="sourceLineNo">079</span>import 
org.apache.hadoop.hbase.io.hfile.HFileScanner;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>import 
org.apache.hadoop.hbase.io.hfile.InvalidHFileException;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>import 
org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>import 
org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>import 
org.apache.hadoop.hbase.protobuf.generated.WALProtos.CompactionDescriptor;<a 
name="line.83"></a>
+<span class="sourceLineNo">084</span>import 
org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a 
name="line.84"></a>
+<span class="sourceLineNo">085</span>import 
org.apache.hadoop.hbase.regionserver.compactions.CompactionProgress;<a 
name="line.85"></a>
+<span class="sourceLineNo">086</span>import 
org.apache.hadoop.hbase.regionserver.compactions.CompactionRequest;<a 
name="line.86"></a>
+<span class="sourceLineNo">087</span>import 
org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a 
name="line.87"></a>
+<span class="sourceLineNo">088</span>import 
org.apache.hadoop.hbase.regionserver.compactions.OffPeakHours;<a 
name="line.88"></a>
+<span class="sourceLineNo">089</span>import 
org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a 
name="line.89"></a>
+<span class="sourceLineNo">090</span>import 
org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.90"></a>
+<span class="sourceLineNo">091</span>import 
org.apache.hadoop.hbase.security.EncryptionUtil;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>import 
org.apache.hadoop.hbase.security.User;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>import 
org.apache.hadoop.hbase.util.Bytes;<a name="line.93"></a>
+<span class="sourceLineNo">094</span>import 
org.apache.hadoop.hbase.util.ChecksumType;<a name="line.94"></a>
+<span class="sourceLineNo">095</span>import 
org.apache.hadoop.hbase.util.ClassSize;<a name="line.95"></a>
+<span class="sourceLineNo">096</span>import 
org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>import 
org.apache.hadoop.hbase.util.ReflectionUtils;<a name="line.97"></a>
+<span class="sourceLineNo">098</span>import 
org.apache.hadoop.util.StringUtils;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>import 
org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;<a 
name="line.99"></a>
 <span class="sourceLineNo">100</span><a name="line.100"></a>
 <span class="sourceLineNo">101</span>/**<a name="line.101"></a>
 <span class="sourceLineNo">102</span> * A Store holds a column family in a 
Region.  Its a memstore and a set of zero<a name="line.102"></a>
@@ -1644,7 +1644,7 @@
 <span class="sourceLineNo">1636</span>      this.lock.readLock().unlock();<a 
name="line.1636"></a>
 <span class="sourceLineNo">1637</span>    }<a name="line.1637"></a>
 <span class="sourceLineNo">1638</span><a name="line.1638"></a>
-<span class="sourceLineNo">1639</span>    
LOG.debug(getRegionInfo().getEncodedName() + " - "  + getColumnFamilyName()<a 
name="line.1639"></a>
+<span class="sourceLineNo">1639</span>    
LOG.debug(getRegionInfo().getEncodedName() + " - " + getColumnFamilyName()<a 
name="line.1639"></a>
 <span class="sourceLineNo">1640</span>        + ": Initiating " + 
(request.isMajor() ? "major" : "minor") + " compaction"<a name="line.1640"></a>
 <span class="sourceLineNo">1641</span>        + (request.isAllFiles() ? " (all 
files)" : ""));<a name="line.1641"></a>
 <span class="sourceLineNo">1642</span>    
this.region.reportCompactionRequestStart(request.isMajor());<a 
name="line.1642"></a>
@@ -1998,72 +1998,72 @@
 <span class="sourceLineNo">1990</span>  }<a name="line.1990"></a>
 <span class="sourceLineNo">1991</span><a name="line.1991"></a>
 <span class="sourceLineNo">1992</span>  /**<a name="line.1992"></a>
-<span class="sourceLineNo">1993</span>   * Used in tests. TODO: Remove<a 
name="line.1993"></a>
-<span class="sourceLineNo">1994</span>   *<a name="line.1994"></a>
-<span class="sourceLineNo">1995</span>   * Updates the value for the given 
row/family/qualifier. This function will always be seen as<a 
name="line.1995"></a>
-<span class="sourceLineNo">1996</span>   * atomic by other readers because it 
only puts a single KV to memstore. Thus no read/write<a name="line.1996"></a>
-<span class="sourceLineNo">1997</span>   * control necessary.<a 
name="line.1997"></a>
-<span class="sourceLineNo">1998</span>   * @param row row to update<a 
name="line.1998"></a>
-<span class="sourceLineNo">1999</span>   * @param f family to update<a 
name="line.1999"></a>
-<span class="sourceLineNo">2000</span>   * @param qualifier qualifier to 
update<a name="line.2000"></a>
-<span class="sourceLineNo">2001</span>   * @param newValue the new value to 
set into memstore<a name="line.2001"></a>
-<span class="sourceLineNo">2002</span>   * @return memstore size delta<a 
name="line.2002"></a>
-<span class="sourceLineNo">2003</span>   * @throws IOException<a 
name="line.2003"></a>
-<span class="sourceLineNo">2004</span>   */<a name="line.2004"></a>
-<span class="sourceLineNo">2005</span>  public long updateColumnValue(byte [] 
row, byte [] f,<a name="line.2005"></a>
-<span class="sourceLineNo">2006</span>                                byte [] 
qualifier, long newValue)<a name="line.2006"></a>
-<span class="sourceLineNo">2007</span>      throws IOException {<a 
name="line.2007"></a>
-<span class="sourceLineNo">2008</span><a name="line.2008"></a>
-<span class="sourceLineNo">2009</span>    this.lock.readLock().lock();<a 
name="line.2009"></a>
-<span class="sourceLineNo">2010</span>    try {<a name="line.2010"></a>
-<span class="sourceLineNo">2011</span>      long now = 
EnvironmentEdgeManager.currentTime();<a name="line.2011"></a>
-<span class="sourceLineNo">2012</span><a name="line.2012"></a>
-<span class="sourceLineNo">2013</span>      return 
this.memstore.updateColumnValue(row,<a name="line.2013"></a>
-<span class="sourceLineNo">2014</span>          f,<a name="line.2014"></a>
-<span class="sourceLineNo">2015</span>          qualifier,<a 
name="line.2015"></a>
-<span class="sourceLineNo">2016</span>          newValue,<a 
name="line.2016"></a>
-<span class="sourceLineNo">2017</span>          now);<a name="line.2017"></a>
-<span class="sourceLineNo">2018</span><a name="line.2018"></a>
-<span class="sourceLineNo">2019</span>    } finally {<a name="line.2019"></a>
-<span class="sourceLineNo">2020</span>      this.lock.readLock().unlock();<a 
name="line.2020"></a>
-<span class="sourceLineNo">2021</span>    }<a name="line.2021"></a>
-<span class="sourceLineNo">2022</span>  }<a name="line.2022"></a>
-<span class="sourceLineNo">2023</span><a name="line.2023"></a>
-<span class="sourceLineNo">2024</span>  @Override<a name="line.2024"></a>
-<span class="sourceLineNo">2025</span>  public long 
upsert(Iterable&lt;Cell&gt; cells, long readpoint) throws IOException {<a 
name="line.2025"></a>
-<span class="sourceLineNo">2026</span>    this.lock.readLock().lock();<a 
name="line.2026"></a>
-<span class="sourceLineNo">2027</span>    try {<a name="line.2027"></a>
-<span class="sourceLineNo">2028</span>      return this.memstore.upsert(cells, 
readpoint);<a name="line.2028"></a>
-<span class="sourceLineNo">2029</span>    } finally {<a name="line.2029"></a>
-<span class="sourceLineNo">2030</span>      this.lock.readLock().unlock();<a 
name="line.2030"></a>
-<span class="sourceLineNo">2031</span>    }<a name="line.2031"></a>
-<span class="sourceLineNo">2032</span>  }<a name="line.2032"></a>
-<span class="sourceLineNo">2033</span><a name="line.2033"></a>
-<span class="sourceLineNo">2034</span>  @Override<a name="line.2034"></a>
-<span class="sourceLineNo">2035</span>  public StoreFlushContext 
createFlushContext(long cacheFlushId) {<a name="line.2035"></a>
-<span class="sourceLineNo">2036</span>    return new 
StoreFlusherImpl(cacheFlushId);<a name="line.2036"></a>
-<span class="sourceLineNo">2037</span>  }<a name="line.2037"></a>
-<span class="sourceLineNo">2038</span><a name="line.2038"></a>
-<span class="sourceLineNo">2039</span>  private final class StoreFlusherImpl 
implements StoreFlushContext {<a name="line.2039"></a>
-<span class="sourceLineNo">2040</span><a name="line.2040"></a>
-<span class="sourceLineNo">2041</span>    private long cacheFlushSeqNum;<a 
name="line.2041"></a>
-<span class="sourceLineNo">2042</span>    private MemStoreSnapshot snapshot;<a 
name="line.2042"></a>
-<span class="sourceLineNo">2043</span>    private List&lt;Path&gt; 
tempFiles;<a name="line.2043"></a>
-<span class="sourceLineNo">2044</span>    private List&lt;Path&gt; 
committedFiles;<a name="line.2044"></a>
-<span class="sourceLineNo">2045</span>    private long cacheFlushCount;<a 
name="line.2045"></a>
-<span class="sourceLineNo">2046</span>    private long cacheFlushSize;<a 
name="line.2046"></a>
-<span class="sourceLineNo">2047</span><a name="line.2047"></a>
-<span class="sourceLineNo">2048</span>    private StoreFlusherImpl(long 
cacheFlushSeqNum) {<a name="line.2048"></a>
-<span class="sourceLineNo">2049</span>      this.cacheFlushSeqNum = 
cacheFlushSeqNum;<a name="line.2049"></a>
-<span class="sourceLineNo">2050</span>    }<a name="line.2050"></a>
-<span class="sourceLineNo">2051</span><a name="line.2051"></a>
-<span class="sourceLineNo">2052</span>    /**<a name="line.2052"></a>
-<span class="sourceLineNo">2053</span>     * This is not thread safe. The 
caller should have a lock on the region or the store.<a name="line.2053"></a>
-<span class="sourceLineNo">2054</span>     * If necessary, the lock can be 
added with the patch provided in HBASE-10087<a name="line.2054"></a>
-<span class="sourceLineNo">2055</span>     */<a name="line.2055"></a>
-<span class="sourceLineNo">2056</span>    @Override<a name="line.2056"></a>
-<span class="sourceLineNo">2057</span>    public void prepare() {<a 
name="line.2057"></a>
-<span class="sourceLineNo">2058</span>      this.snapshot = 
memstore.snapshot();<a name="line.2058"></a>
+<span class="sourceLineNo">1993</span>   * Updates the value for the given 
row/family/qualifier. This function will always be seen as<a 
name="line.1993"></a>
+<span class="sourceLineNo">1994</span>   * atomic by other readers because it 
only puts a single KV to memstore. Thus no read/write<a name="line.1994"></a>
+<span class="sourceLineNo">1995</span>   * control necessary.<a 
name="line.1995"></a>
+<span class="sourceLineNo">1996</span>   * @param row row to update<a 
name="line.1996"></a>
+<span class="sourceLineNo">1997</span>   * @param f family to update<a 
name="line.1997"></a>
+<span class="sourceLineNo">1998</span>   * @param qualifier qualifier to 
update<a name="line.1998"></a>
+<span class="sourceLineNo">1999</span>   * @param newValue the new value to 
set into memstore<a name="line.1999"></a>
+<span class="sourceLineNo">2000</span>   * @return memstore size delta<a 
name="line.2000"></a>
+<span class="sourceLineNo">2001</span>   * @throws IOException<a 
name="line.2001"></a>
+<span class="sourceLineNo">2002</span>   */<a name="line.2002"></a>
+<span class="sourceLineNo">2003</span>  @VisibleForTesting<a 
name="line.2003"></a>
+<span class="sourceLineNo">2004</span>  public long updateColumnValue(byte [] 
row, byte [] f,<a name="line.2004"></a>
+<span class="sourceLineNo">2005</span>                                byte [] 
qualifier, long newValue)<a name="line.2005"></a>
+<span class="sourceLineNo">2006</span>      throws IOException {<a 
name="line.2006"></a>
+<span class="sourceLineNo">2007</span><a name="line.2007"></a>
+<span class="sourceLineNo">2008</span>    this.lock.readLock().lock();<a 
name="line.2008"></a>
+<span class="sourceLineNo">2009</span>    try {<a name="line.2009"></a>
+<span class="sourceLineNo">2010</span>      long now = 
EnvironmentEdgeManager.currentTime();<a name="line.2010"></a>
+<span class="sourceLineNo">2011</span><a name="line.2011"></a>
+<span class="sourceLineNo">2012</span>      return 
this.memstore.updateColumnValue(row,<a name="line.2012"></a>
+<span class="sourceLineNo">2013</span>          f,<a name="line.2013"></a>
+<span class="sourceLineNo">2014</span>          qualifier,<a 
name="line.2014"></a>
+<span class="sourceLineNo">2015</span>          newValue,<a 
name="line.2015"></a>
+<span class="sourceLineNo">2016</span>          now);<a name="line.2016"></a>
+<span class="sourceLineNo">2017</span><a name="line.2017"></a>
+<span class="sourceLineNo">2018</span>    } finally {<a name="line.2018"></a>
+<span class="sourceLineNo">2019</span>      this.lock.readLock().unlock();<a 
name="line.2019"></a>
+<span class="sourceLineNo">2020</span>    }<a name="line.2020"></a>
+<span class="sourceLineNo">2021</span>  }<a name="line.2021"></a>
+<span class="sourceLineNo">2022</span><a name="line.2022"></a>
+<span class="sourceLineNo">2023</span>  @Override<a name="line.2023"></a>
+<span class="sourceLineNo">2024</span>  public long 
upsert(Iterable&lt;Cell&gt; cells, long readpoint) throws IOException {<a 
name="line.2024"></a>
+<span class="sourceLineNo">2025</span>    this.lock.readLock().lock();<a 
name="line.2025"></a>
+<span class="sourceLineNo">2026</span>    try {<a name="line.2026"></a>
+<span class="sourceLineNo">2027</span>      return this.memstore.upsert(cells, 
readpoint);<a name="line.2027"></a>
+<span class="sourceLineNo">2028</span>    } finally {<a name="line.2028"></a>
+<span class="sourceLineNo">2029</span>      this.lock.readLock().unlock();<a 
name="line.2029"></a>
+<span class="sourceLineNo">2030</span>    }<a name="line.2030"></a>
+<span class="sourceLineNo">2031</span>  }<a name="line.2031"></a>
+<span class="sourceLineNo">2032</span><a name="line.2032"></a>
+<span class="sourceLineNo">2033</span>  @Override<a name="line.2033"></a>
+<span class="sourceLineNo">2034</span>  public StoreFlushContext 
createFlushContext(long cacheFlushId) {<a name="line.2034"></a>
+<span class="sourceLineNo">2035</span>    return new 
StoreFlusherImpl(cacheFlushId);<a name="line.2035"></a>
+<span class="sourceLineNo">2036</span>  }<a name="line.2036"></a>
+<span class="sourceLineNo">2037</span><a name="line.2037"></a>
+<span class="sourceLineNo">2038</span>  private final class StoreFlusherImpl 
implements StoreFlushContext {<a name="line.2038"></a>
+<span class="sourceLineNo">2039</span><a name="line.2039"></a>
+<span class="sourceLineNo">2040</span>    private long cacheFlushSeqNum;<a 
name="line.2040"></a>
+<span class="sourceLineNo">2041</span>    private MemStoreSnapshot snapshot;<a 
name="line.2041"></a>
+<span class="sourceLineNo">2042</span>    private List&lt;Path&gt; 
tempFiles;<a name="line.2042"></a>
+<span class="sourceLineNo">2043</span>    private List&lt;Path&gt; 
committedFiles;<a name="line.2043"></a>
+<span class="sourceLineNo">2044</span>    private long cacheFlushCount;<a 
name="line.2044"></a>
+<span class="sourceLineNo">2045</span>    private long cacheFlushSize;<a 
name="line.2045"></a>
+<span class="sourceLineNo">2046</span><a name="line.2046"></a>
+<span class="sourceLineNo">2047</span>    private StoreFlusherImpl(long 
cacheFlushSeqNum) {<a name="line.2047"></a>
+<span class="sourceLineNo">2048</span>      this.cacheFlushSeqNum = 
cacheFlushSeqNum;<a name="line.2048"></a>
+<span class="sourceLineNo">2049</span>    }<a name="line.2049"></a>
+<span class="sourceLineNo">2050</span><a name="line.2050"></a>
+<span class="sourceLineNo">2051</span>    /**<a name="line.2051"></a>
+<span class="sourceLineNo">2052</span>     * This is not thread safe. The 
caller should have a lock on the region or the store.<a name="line.2052"></a>
+<span class="sourceLineNo">2053</span>     * If necessary, the lock can be 
added with the patch provided in HBASE-10087<a name="line.2053"></a>
+<span class="sourceLineNo">2054</span>     */<a name="line.2054"></a>
+<span class="sourceLineNo">2055</span>    @Override<a name="line.2055"></a>
+<span class="sourceLineNo">2056</span>    public void prepare() {<a 
name="line.2056"></a>
+<span class="sourceLineNo">2057</span>      // passing the current sequence 
number of the wal - to allow bookkeeping in the memstore<a name="line.2057"></a>
+<span class="sourceLineNo">2058</span>      this.snapshot = 
memstore.snapshot(cacheFlushSeqNum);<a name="line.2058"></a>
 <span class="sourceLineNo">2059</span>      this.cacheFlushCount = 
snapshot.getCellsCount();<a name="line.2059"></a>
 <span class="sourceLineNo">2060</span>      this.cacheFlushSize = 
snapshot.getSize();<a name="line.2060"></a>
 <span class="sourceLineNo">2061</span>      committedFiles = new 
ArrayList&lt;Path&gt;(1);<a name="line.2061"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/526c7822/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ImmutableSegment.html
----------------------------------------------------------------------
diff --git 
a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ImmutableSegment.html
 
b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ImmutableSegment.html
new file mode 100644
index 0000000..7157068
--- /dev/null
+++ 
b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ImmutableSegment.html
@@ -0,0 +1,144 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" 
title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> *<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * Licensed to the Apache Software 
Foundation (ASF) under one<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * or more contributor license 
agreements.  See the NOTICE file<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * distributed with this work for 
additional information<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * regarding copyright ownership.  The 
ASF licenses this file<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * to you under the Apache License, 
Version 2.0 (the<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * "License"); you may not use this file 
except in compliance<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * with the License.  You may obtain a 
copy of the License at<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *     
http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
+<span class="sourceLineNo">012</span> *<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * Unless required by applicable law or 
agreed to in writing, software<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * distributed under the License is 
distributed on an "AS IS" BASIS,<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF 
ANY KIND, either express or implied.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * See the License for the specific 
language governing permissions and<a name="line.16"></a>
+<span class="sourceLineNo">017</span> * limitations under the License.<a 
name="line.17"></a>
+<span class="sourceLineNo">018</span> */<a name="line.18"></a>
+<span class="sourceLineNo">019</span>package 
org.apache.hadoop.hbase.regionserver;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import 
org.apache.commons.lang.NotImplementedException;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.Cell;<a 
name="line.22"></a>
+<span class="sourceLineNo">023</span>import 
org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.23"></a>
+<span class="sourceLineNo">024</span><a name="line.24"></a>
+<span class="sourceLineNo">025</span>/**<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * ImmutableSegment is an abstract class 
that extends the API supported by a {@link Segment},<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * and is not needed for a {@link 
MutableSegment}. Specifically, the method<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * {@link 
ImmutableSegment#getKeyValueScanner()} builds a special scanner for the<a 
name="line.28"></a>
+<span class="sourceLineNo">029</span> * {@link MemStoreSnapshot} object.<a 
name="line.29"></a>
+<span class="sourceLineNo">030</span> * In addition, this class overrides 
methods that are not likely to be supported by an immutable<a 
name="line.30"></a>
+<span class="sourceLineNo">031</span> * segment, e.g. {@link 
Segment#rollback(Cell)} and {@link Segment#getCellSet()}, which<a 
name="line.31"></a>
+<span class="sourceLineNo">032</span> * can be very inefficient.<a 
name="line.32"></a>
+<span class="sourceLineNo">033</span> */<a name="line.33"></a>
+<span class="sourceLineNo">034</span>@InterfaceAudience.Private<a 
name="line.34"></a>
+<span class="sourceLineNo">035</span>public abstract class ImmutableSegment 
extends Segment {<a name="line.35"></a>
+<span class="sourceLineNo">036</span><a name="line.36"></a>
+<span class="sourceLineNo">037</span>  public ImmutableSegment(Segment 
segment) {<a name="line.37"></a>
+<span class="sourceLineNo">038</span>    super(segment);<a name="line.38"></a>
+<span class="sourceLineNo">039</span>  }<a name="line.39"></a>
+<span class="sourceLineNo">040</span><a name="line.40"></a>
+<span class="sourceLineNo">041</span>  /**<a name="line.41"></a>
+<span class="sourceLineNo">042</span>   * Removes the given cell from this 
segment.<a name="line.42"></a>
+<span class="sourceLineNo">043</span>   * By default immutable store segment 
can not rollback<a name="line.43"></a>
+<span class="sourceLineNo">044</span>   * It may be invoked by tests in 
specific cases where it is known to be supported {@link<a name="line.44"></a>
+<span class="sourceLineNo">045</span>   * ImmutableSegmentAdapter}<a 
name="line.45"></a>
+<span class="sourceLineNo">046</span>   */<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  @Override<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  public long rollback(Cell cell) {<a 
name="line.48"></a>
+<span class="sourceLineNo">049</span>    return 0;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  }<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>  /**<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   * Returns a set of all the cells in 
the segment.<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   * The implementation of this method 
might be very inefficient for some immutable segments<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   * that do not maintain a cell set. 
Therefore by default this method is not supported.<a name="line.55"></a>
+<span class="sourceLineNo">056</span>   * It may be invoked by tests in 
specific cases where it is known to be supported {@link<a name="line.56"></a>
+<span class="sourceLineNo">057</span>   * ImmutableSegmentAdapter}<a 
name="line.57"></a>
+<span class="sourceLineNo">058</span>   */<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  @Override<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  public CellSet getCellSet() {<a 
name="line.60"></a>
+<span class="sourceLineNo">061</span>    throw new 
NotImplementedException("Immutable Segment does not support this operation by " 
+<a name="line.61"></a>
+<span class="sourceLineNo">062</span>        "default");<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  }<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  /**<a name="line.65"></a>
+<span class="sourceLineNo">066</span>   * Builds a special scanner for the 
MemStoreSnapshot object that may be different than the<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   * general segment scanner.<a 
name="line.67"></a>
+<span class="sourceLineNo">068</span>   * @return a special scanner for the 
MemStoreSnapshot object<a name="line.68"></a>
+<span class="sourceLineNo">069</span>   */<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  public abstract KeyValueScanner 
getKeyValueScanner();<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>}<a name="line.72"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/526c7822/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ImmutableSegmentAdapter.html
----------------------------------------------------------------------
diff --git 
a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ImmutableSegmentAdapter.html
 
b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ImmutableSegmentAdapter.html
new file mode 100644
index 0000000..cb291b7
--- /dev/null
+++ 
b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ImmutableSegmentAdapter.html
@@ -0,0 +1,179 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" 
title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> *<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * Licensed to the Apache Software 
Foundation (ASF) under one<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * or more contributor license 
agreements.  See the NOTICE file<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * distributed with this work for 
additional information<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * regarding copyright ownership.  The 
ASF licenses this file<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * to you under the Apache License, 
Version 2.0 (the<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * "License"); you may not use this file 
except in compliance<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * with the License.  You may obtain a 
copy of the License at<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *     
http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
+<span class="sourceLineNo">012</span> *<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * Unless required by applicable law or 
agreed to in writing, software<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * distributed under the License is 
distributed on an "AS IS" BASIS,<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF 
ANY KIND, either express or implied.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * See the License for the specific 
language governing permissions and<a name="line.16"></a>
+<span class="sourceLineNo">017</span> * limitations under the License.<a 
name="line.17"></a>
+<span class="sourceLineNo">018</span> */<a name="line.18"></a>
+<span class="sourceLineNo">019</span>package 
org.apache.hadoop.hbase.regionserver;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.commons.logging.Log;<a 
name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.Cell;<a 
name="line.22"></a>
+<span class="sourceLineNo">023</span>import 
org.apache.hadoop.hbase.classification.InterfaceAudience;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import 
org.apache.hadoop.hbase.util.CollectionBackedScanner;<a name="line.24"></a>
+<span class="sourceLineNo">025</span><a name="line.25"></a>
+<span class="sourceLineNo">026</span>/**<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * This segment is adapting a mutable 
segment making it into an immutable segment.<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * This is used when a mutable segment is 
moved to being a snapshot or pushed into a compaction<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * pipeline, that consists only of 
immutable segments.<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * The compaction may generate different 
type of immutable segment<a name="line.30"></a>
+<span class="sourceLineNo">031</span> */<a name="line.31"></a>
+<span class="sourceLineNo">032</span>@InterfaceAudience.Private<a 
name="line.32"></a>
+<span class="sourceLineNo">033</span>public class ImmutableSegmentAdapter 
extends ImmutableSegment {<a name="line.33"></a>
+<span class="sourceLineNo">034</span><a name="line.34"></a>
+<span class="sourceLineNo">035</span>  final private MutableSegment adaptee;<a 
name="line.35"></a>
+<span class="sourceLineNo">036</span><a name="line.36"></a>
+<span class="sourceLineNo">037</span>  public 
ImmutableSegmentAdapter(MutableSegment segment) {<a name="line.37"></a>
+<span class="sourceLineNo">038</span>    super(segment);<a name="line.38"></a>
+<span class="sourceLineNo">039</span>    this.adaptee = segment;<a 
name="line.39"></a>
+<span class="sourceLineNo">040</span>  }<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>  @Override<a name="line.42"></a>
+<span class="sourceLineNo">043</span>  public KeyValueScanner 
getKeyValueScanner() {<a name="line.43"></a>
+<span class="sourceLineNo">044</span>    return new 
CollectionBackedScanner(adaptee.getCellSet(), adaptee.getComparator());<a 
name="line.44"></a>
+<span class="sourceLineNo">045</span>  }<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>  @Override<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  public SegmentScanner 
getSegmentScanner(long readPoint) {<a name="line.48"></a>
+<span class="sourceLineNo">049</span>    return 
adaptee.getSegmentScanner(readPoint);<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  }<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>  @Override<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  public boolean isEmpty() {<a 
name="line.53"></a>
+<span class="sourceLineNo">054</span>    return adaptee.isEmpty();<a 
name="line.54"></a>
+<span class="sourceLineNo">055</span>  }<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  @Override<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  public int getCellsCount() {<a 
name="line.58"></a>
+<span class="sourceLineNo">059</span>    return adaptee.getCellsCount();<a 
name="line.59"></a>
+<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>  @Override<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  public long add(Cell cell) {<a 
name="line.63"></a>
+<span class="sourceLineNo">064</span>    return adaptee.add(cell);<a 
name="line.64"></a>
+<span class="sourceLineNo">065</span>  }<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  @Override<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  public Cell getFirstAfter(Cell cell) 
{<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    return adaptee.getFirstAfter(cell);<a 
name="line.69"></a>
+<span class="sourceLineNo">070</span>  }<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>  @Override<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  public void close() {<a 
name="line.73"></a>
+<span class="sourceLineNo">074</span>    adaptee.close();<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  }<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  @Override<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  public Cell 
maybeCloneWithAllocator(Cell cell) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    return 
adaptee.maybeCloneWithAllocator(cell);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  }<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  @Override<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  public Segment setSize(long size) {<a 
name="line.83"></a>
+<span class="sourceLineNo">084</span>    adaptee.setSize(size);<a 
name="line.84"></a>
+<span class="sourceLineNo">085</span>    return this;<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  }<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>  @Override<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  public long getSize() {<a 
name="line.89"></a>
+<span class="sourceLineNo">090</span>    return adaptee.getSize();<a 
name="line.90"></a>
+<span class="sourceLineNo">091</span>  }<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>  @Override<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  public long rollback(Cell cell) {<a 
name="line.94"></a>
+<span class="sourceLineNo">095</span>    return adaptee.rollback(cell);<a 
name="line.95"></a>
+<span class="sourceLineNo">096</span>  }<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>  @Override<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  public CellSet getCellSet() {<a 
name="line.99"></a>
+<span class="sourceLineNo">100</span>    return adaptee.getCellSet();<a 
name="line.100"></a>
+<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>  @Override<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public void dump(Log log) {<a 
name="line.104"></a>
+<span class="sourceLineNo">105</span>    adaptee.dump(log);<a 
name="line.105"></a>
+<span class="sourceLineNo">106</span>  }<a name="line.106"></a>
+<span class="sourceLineNo">107</span>}<a name="line.107"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

Reply via email to