You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2013/03/01 18:53:43 UTC
svn commit: r1451668 -
/hbase/branches/0.95/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.java
Author: tedyu
Date: Fri Mar 1 17:53:42 2013
New Revision: 1451668
URL: http://svn.apache.org/r1451668
Log:
HBASE-7936 Undo prefix-tree module as dependency for mapreduce and for DataBlockEncoding (Ted Yu)
Modified:
hbase/branches/0.95/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.java
Modified: hbase/branches/0.95/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.95/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.java?rev=1451668&r1=1451667&r2=1451668&view=diff
==============================================================================
--- hbase/branches/0.95/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.java (original)
+++ hbase/branches/0.95/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.java Fri Mar 1 17:53:42 2013
@@ -36,16 +36,17 @@ public enum DataBlockEncoding {
/** Disable data block encoding. */
NONE(0, null),
// id 1 is reserved for the BITSET algorithm to be added later
- PREFIX(2, createEncoder("org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder")),
- DIFF(3, createEncoder("org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder")),
- FAST_DIFF(4, createEncoder("org.apache.hadoop.hbase.io.encoding.FastDiffDeltaEncoder")),
+ PREFIX(2, "org.apache.hadoop.hbase.io.encoding.PrefixKeyDeltaEncoder"),
+ DIFF(3, "org.apache.hadoop.hbase.io.encoding.DiffKeyDeltaEncoder"),
+ FAST_DIFF(4, "org.apache.hadoop.hbase.io.encoding.FastDiffDeltaEncoder"),
// id 5 is reserved for the COPY_KEY algorithm for benchmarking
- // COPY_KEY(5, createEncoder("org.apache.hadoop.hbase.io.encoding.CopyKeyDataBlockEncoder")),
- PREFIX_TREE(6, createEncoder("org.apache.hbase.codec.prefixtree.PrefixTreeCodec"));
+ // COPY_KEY(5, "org.apache.hadoop.hbase.io.encoding.CopyKeyDataBlockEncoder"),
+ PREFIX_TREE(6, "org.apache.hbase.codec.prefixtree.PrefixTreeCodec");
private final short id;
private final byte[] idInBytes;
- private final DataBlockEncoder encoder;
+ private DataBlockEncoder encoder;
+ private final String encoderCls;
public static final int ID_SIZE = Bytes.SIZEOF_SHORT;
@@ -66,7 +67,7 @@ public enum DataBlockEncoding {
}
}
- private DataBlockEncoding(int id, DataBlockEncoder encoder) {
+ private DataBlockEncoding(int id, String encoderClsName) {
if (id < Short.MIN_VALUE || id > Short.MAX_VALUE) {
throw new AssertionError(
"Data block encoding algorithm id is out of range: " + id);
@@ -79,7 +80,7 @@ public enum DataBlockEncoding {
throw new RuntimeException("Unexpected length of encoder ID byte " +
"representation: " + Bytes.toStringBinary(idInBytes));
}
- this.encoder = encoder;
+ this.encoderCls = encoderClsName;
}
/**
@@ -122,6 +123,10 @@ public enum DataBlockEncoding {
* selected.
*/
public DataBlockEncoder getEncoder() {
+ if (encoder == null && id != 0) {
+ // lazily create the encoder
+ encoder = createEncoder(encoderCls);
+ }
return encoder;
}