1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.hadoop.hbase.regionserver.wal;
21
22 import java.io.IOException;
23 import java.util.concurrent.atomic.AtomicLong;
24
25 import org.apache.commons.logging.Log;
26 import org.apache.commons.logging.LogFactory;
27 import org.apache.hadoop.hbase.classification.InterfaceAudience;
28 import org.apache.hadoop.hbase.HRegionInfo;
29 import org.apache.hadoop.hbase.HTableDescriptor;
30 import org.apache.hadoop.hbase.TableName;
31 import org.apache.hadoop.hbase.protobuf.generated.WALProtos.CompactionDescriptor;
32 import org.apache.hadoop.hbase.protobuf.generated.WALProtos.FlushDescriptor;
33 import org.apache.hadoop.hbase.protobuf.generated.WALProtos.RegionEventDescriptor;
34 import org.apache.hadoop.hbase.wal.WAL;
35 import org.apache.hadoop.hbase.wal.WALKey;
36
37 import com.google.protobuf.TextFormat;
38
39
40
41
42
43
44 @InterfaceAudience.Private
45 public class WALUtil {
46 static final Log LOG = LogFactory.getLog(WALUtil.class);
47
48
49
50
51
52
53
54
55 public static void writeCompactionMarker(WAL log, HTableDescriptor htd, HRegionInfo info,
56 final CompactionDescriptor c, AtomicLong sequenceId) throws IOException {
57 TableName tn = TableName.valueOf(c.getTableName().toByteArray());
58
59 WALKey key = new HLogKey(info.getEncodedNameAsBytes(), tn);
60 log.append(htd, info, key, WALEdit.createCompaction(info, c), sequenceId, false, null);
61 log.sync();
62 if (LOG.isTraceEnabled()) {
63 LOG.trace("Appended compaction marker " + TextFormat.shortDebugString(c));
64 }
65 }
66
67
68
69
70 public static long writeFlushMarker(WAL log, HTableDescriptor htd, HRegionInfo info,
71 final FlushDescriptor f, AtomicLong sequenceId, boolean sync) throws IOException {
72 TableName tn = TableName.valueOf(f.getTableName().toByteArray());
73
74 WALKey key = new HLogKey(info.getEncodedNameAsBytes(), tn);
75 long trx = log.append(htd, info, key, WALEdit.createFlushWALEdit(info, f), sequenceId, false,
76 null);
77 if (sync) log.sync(trx);
78 if (LOG.isTraceEnabled()) {
79 LOG.trace("Appended flush marker " + TextFormat.shortDebugString(f));
80 }
81 return trx;
82 }
83
84
85
86
87 public static long writeRegionEventMarker(WAL log, HTableDescriptor htd, HRegionInfo info,
88 final RegionEventDescriptor r, AtomicLong sequenceId) throws IOException {
89 TableName tn = TableName.valueOf(r.getTableName().toByteArray());
90
91 WALKey key = new HLogKey(info.getEncodedNameAsBytes(), tn);
92 long trx = log.append(htd, info, key, WALEdit.createRegionEventWALEdit(info, r),
93 sequenceId, false, null);
94 log.sync(trx);
95 if (LOG.isTraceEnabled()) {
96 LOG.trace("Appended region event marker " + TextFormat.shortDebugString(r));
97 }
98 return trx;
99 }
100
101 }