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.hbase.classification.InterfaceAudience;
22 import org.apache.hadoop.hbase.CompatibilitySingletonFactory;
23
24
25
26
27
28 @InterfaceAudience.Private
29 public class MetricsSink {
30
31 public static final String SINK_AGE_OF_LAST_APPLIED_OP =
32 MetricsReplicationSinkSource.SINK_AGE_OF_LAST_APPLIED_OP;
33 public static final String SINK_APPLIED_BATCHES =
34 MetricsReplicationSinkSource.SINK_APPLIED_BATCHES;
35 public static final String SINK_APPLIED_OPS =
36 MetricsReplicationSinkSource.SINK_APPLIED_OPS;
37
38 private long lastTimestampForAge = System.currentTimeMillis();
39 private final MetricsReplicationSinkSource mss;
40
41 public MetricsSink() {
42 mss = CompatibilitySingletonFactory.getInstance(MetricsReplicationSourceFactory.class)
43 .getSink();
44 }
45
46
47
48
49
50
51
52 public long setAgeOfLastAppliedOp(long timestamp) {
53 long age = 0;
54 if (lastTimestampForAge != timestamp) {
55 lastTimestampForAge = timestamp;
56 age = System.currentTimeMillis() - lastTimestampForAge;
57 }
58 mss.setLastAppliedOpAge(age);
59 return age;
60 }
61
62
63
64
65
66
67 public long refreshAgeOfLastAppliedOp() {
68 return setAgeOfLastAppliedOp(lastTimestampForAge);
69 }
70
71
72
73
74
75
76 public void applyBatch(long batchSize) {
77 mss.incrAppliedBatches(1);
78 mss.incrAppliedOps(batchSize);
79 }
80
81
82
83
84
85 public long getAgeOfLastAppliedOp() {
86 return mss.getLastAppliedOpAge();
87 }
88
89
90
91
92
93
94 public long getTimeStampOfLastAppliedOp() {
95 return this.lastTimestampForAge;
96 }
97
98 }