1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.replication.regionserver;
20
21 import org.apache.hadoop.classification.InterfaceAudience;
22 import org.apache.hadoop.hbase.CompatibilitySingletonFactory;
23 import org.apache.hadoop.hbase.replication.regionserver.MetricsReplicationSource;
24
25
26
27
28
29 @InterfaceAudience.Private
30 public class MetricsSink {
31
32 public static final String SINK_AGE_OF_LAST_APPLIED_OP = "sink.ageOfLastAppliedOp";
33 public static final String SINK_APPLIED_BATCHES = "sink.appliedBatches";
34 public static final String SINK_APPLIED_OPS = "sink.appliedOps";
35
36 private MetricsReplicationSource rms;
37 private long lastTimestampForAge = System.currentTimeMillis();
38
39 public MetricsSink() {
40 rms = CompatibilitySingletonFactory.getInstance(MetricsReplicationSource.class);
41 }
42
43
44
45
46
47
48
49 public long setAgeOfLastAppliedOp(long timestamp) {
50 lastTimestampForAge = timestamp;
51 long age = System.currentTimeMillis() - lastTimestampForAge;
52 rms.setGauge(SINK_AGE_OF_LAST_APPLIED_OP, age);
53 return age;
54 }
55
56
57
58
59
60
61 public long refreshAgeOfLastAppliedOp() {
62 return setAgeOfLastAppliedOp(lastTimestampForAge);
63 }
64
65
66
67
68
69
70 public void applyBatch(long batchSize) {
71 rms.incCounters(SINK_APPLIED_BATCHES, 1);
72 rms.incCounters(SINK_APPLIED_OPS, batchSize);
73 }
74
75 }