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
24 import org.apache.commons.logging.Log;
25 import org.apache.commons.logging.LogFactory;
26 import org.apache.hadoop.fs.Path;
27 import org.apache.hadoop.hbase.classification.InterfaceAudience;
28 import org.apache.hadoop.hbase.CompatibilitySingletonFactory;
29 import org.apache.hadoop.hbase.HRegionInfo;
30 import org.apache.hadoop.hbase.HTableDescriptor;
31 import org.apache.hadoop.util.StringUtils;
32
33 import com.google.common.annotations.VisibleForTesting;
34
35
36
37
38
39
40 @InterfaceAudience.Private
41 public class MetricsWAL implements WALActionsListener {
42 static final Log LOG = LogFactory.getLog(MetricsWAL.class);
43
44 private final MetricsWALSource source;
45
46 public MetricsWAL() {
47 this(CompatibilitySingletonFactory.getInstance(MetricsWALSource.class));
48 }
49
50 @VisibleForTesting
51 MetricsWAL(MetricsWALSource s) {
52 this.source = s;
53 }
54
55 public void finishSync(long time) {
56 source.incrementSyncTime(time);
57 }
58
59 public void finishAppend(long time, long size) {
60
61 source.incrementAppendCount();
62 source.incrementAppendTime(time);
63 source.incrementAppendSize(size);
64 source.incrementWrittenBytes(size);
65
66 if (time > 1000) {
67 source.incrementSlowAppendCount();
68 LOG.warn(String.format("%s took %d ms appending an edit to hlog; len~=%s",
69 Thread.currentThread().getName(),
70 time,
71 StringUtils.humanReadableInt(size)));
72 }
73 }
74
75 @Override
76 public void logRollRequested(boolean underReplicated) {
77 source.incrementLogRollRequested();
78 if (underReplicated) {
79 source.incrementLowReplicationLogRoll();
80 }
81 }
82
83 @Override
84 public void preLogRoll(Path oldPath, Path newPath) throws IOException {
85 }
86
87 @Override
88 public void postLogRoll(Path oldPath, Path newPath) throws IOException {
89 }
90
91 @Override
92 public void preLogArchive(Path oldPath, Path newPath) throws IOException {
93 }
94
95 @Override
96 public void postLogArchive(Path oldPath, Path newPath) throws IOException {
97 }
98
99 @Override
100 public void logCloseRequested() {
101 }
102
103 @Override
104 public void visitLogEntryBeforeWrite(HRegionInfo info, HLogKey logKey, WALEdit logEdit) {
105 }
106
107 @Override
108 public void visitLogEntryBeforeWrite(HTableDescriptor htd, HLogKey logKey, WALEdit logEdit) {
109 }
110 }