1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.regionserver.wal;
20
21 import java.lang.reflect.Constructor;
22 import java.lang.reflect.InvocationTargetException;
23
24 import org.apache.hadoop.hbase.HBaseInterfaceAudience;
25 import org.apache.hadoop.hbase.classification.InterfaceAudience;
26 import org.apache.hadoop.hbase.io.TagCompressionContext;
27 import org.apache.hadoop.hbase.io.util.Dictionary;
28
29
30
31
32 @InterfaceAudience.LimitedPrivate({HBaseInterfaceAudience.COPROC, HBaseInterfaceAudience.PHOENIX})
33 class CompressionContext {
34
35 static final String ENABLE_WAL_TAGS_COMPRESSION =
36 "hbase.regionserver.wal.tags.enablecompression";
37
38 final Dictionary regionDict;
39 final Dictionary tableDict;
40 final Dictionary familyDict;
41 final Dictionary qualifierDict;
42 final Dictionary rowDict;
43
44 TagCompressionContext tagCompressionContext = null;
45
46 public CompressionContext(Class<? extends Dictionary> dictType, boolean recoveredEdits,
47 boolean hasTagCompression) throws SecurityException, NoSuchMethodException,
48 InstantiationException, IllegalAccessException, InvocationTargetException {
49 Constructor<? extends Dictionary> dictConstructor =
50 dictType.getConstructor();
51 regionDict = dictConstructor.newInstance();
52 tableDict = dictConstructor.newInstance();
53 familyDict = dictConstructor.newInstance();
54 qualifierDict = dictConstructor.newInstance();
55 rowDict = dictConstructor.newInstance();
56 if (recoveredEdits) {
57
58 regionDict.init(1);
59 tableDict.init(1);
60 } else {
61 regionDict.init(Short.MAX_VALUE);
62 tableDict.init(Short.MAX_VALUE);
63 }
64 rowDict.init(Short.MAX_VALUE);
65 familyDict.init(Byte.MAX_VALUE);
66 qualifierDict.init(Byte.MAX_VALUE);
67 if (hasTagCompression) {
68 tagCompressionContext = new TagCompressionContext(dictType, Short.MAX_VALUE);
69 }
70 }
71
72 void clear() {
73 regionDict.clear();
74 tableDict.clear();
75 familyDict.clear();
76 qualifierDict.clear();
77 rowDict.clear();
78 if (tagCompressionContext != null) {
79 tagCompressionContext.clear();
80 }
81 }
82 }