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<Cell> 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<Path> tempFiles;<a name="line.2043"></a> -<span class="sourceLineNo">2044</span> private List<Path> 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<Cell> 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<Path> tempFiles;<a name="line.2042"></a> +<span class="sourceLineNo">2043</span> private List<Path> 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<Path>(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<Cell> 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<Path> tempFiles;<a name="line.2043"></a> -<span class="sourceLineNo">2044</span> private List<Path> 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<Cell> 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<Path> tempFiles;<a name="line.2042"></a> +<span class="sourceLineNo">2043</span> private List<Path> 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<Path>(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>
