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 long age = 0;
51 if (lastTimestampForAge != timestamp) {
52 lastTimestampForAge = timestamp;
53 age = System.currentTimeMillis() - lastTimestampForAge;
54 }
55 rms.setGauge(SINK_AGE_OF_LAST_APPLIED_OP, age);
56 return age;
57 }
58
59
60
61
62
63
64 public long refreshAgeOfLastAppliedOp() {
65 return setAgeOfLastAppliedOp(lastTimestampForAge);
66 }
67
68
69
70
71
72
73 public void applyBatch(long batchSize) {
74 rms.incCounters(SINK_APPLIED_BATCHES, 1);
75 rms.incCounters(SINK_APPLIED_OPS, batchSize);
76 }
77
78 }