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.commons.logging.Log;
22 import org.apache.commons.logging.LogFactory;
23 import org.apache.hadoop.hbase.classification.InterfaceAudience;
24 import org.apache.hadoop.hbase.CompatibilitySingletonFactory;
25 import org.apache.hadoop.hbase.HBaseInterfaceAudience;
26 import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
27
28
29
30
31
32 @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.REPLICATION)
33 public class MetricsSource {
34
35 public static final Log LOG = LogFactory.getLog(MetricsSource.class);
36
37 private long lastTimestamp = 0;
38 private int lastQueueSize = 0;
39 private String id;
40
41 private final MetricsReplicationSourceSource singleSourceSource;
42 private final MetricsReplicationSourceSource globalSourceSource;
43
44
45
46
47
48
49 public MetricsSource(String id) {
50 this.id = id;
51 singleSourceSource =
52 CompatibilitySingletonFactory.getInstance(MetricsReplicationSourceFactory.class)
53 .getSource(id);
54 globalSourceSource = CompatibilitySingletonFactory.getInstance(MetricsReplicationSourceFactory.class).getGlobalSource();
55 }
56
57
58
59
60
61
62 public void setAgeOfLastShippedOp(long timestamp) {
63 long age = EnvironmentEdgeManager.currentTime() - timestamp;
64 singleSourceSource.setLastShippedAge(age);
65 globalSourceSource.setLastShippedAge(age);
66 this.lastTimestamp = timestamp;
67 }
68
69
70
71
72
73 public void refreshAgeOfLastShippedOp() {
74 if (this.lastTimestamp > 0) {
75 setAgeOfLastShippedOp(this.lastTimestamp);
76 }
77 }
78
79
80
81
82
83
84 public void setSizeOfLogQueue(int size) {
85 singleSourceSource.setSizeOfLogQueue(size);
86 globalSourceSource.incrSizeOfLogQueue(size - lastQueueSize);
87 lastQueueSize = size;
88 }
89
90
91
92
93
94
95 private void incrLogEditsRead(long delta) {
96 singleSourceSource.incrLogReadInEdits(delta);
97 globalSourceSource.incrLogReadInEdits(delta);
98 }
99
100
101 public void incrLogEditsRead() {
102 incrLogEditsRead(1);
103 }
104
105
106
107
108
109
110 private void incrLogEditsFiltered(long delta) {
111 singleSourceSource.incrLogEditsFiltered(delta);
112 globalSourceSource.incrLogEditsFiltered(delta);
113 }
114
115
116 public void incrLogEditsFiltered() {
117 incrLogEditsFiltered(1);
118 }
119
120
121
122
123
124
125 public void shipBatch(long batchSize, int sizeInKB) {
126 singleSourceSource.incrBatchesShipped(1);
127 globalSourceSource.incrBatchesShipped(1);
128
129 singleSourceSource.incrOpsShipped(batchSize);
130 globalSourceSource.incrOpsShipped(batchSize);
131
132 singleSourceSource.incrShippedKBs(sizeInKB);
133 globalSourceSource.incrShippedKBs(sizeInKB);
134 }
135
136
137 public void incrLogReadInBytes(long readInBytes) {
138 singleSourceSource.incrLogReadInBytes(readInBytes);
139 globalSourceSource.incrLogReadInBytes(readInBytes);
140 }
141
142
143 public void clear() {
144 singleSourceSource.clear();
145 globalSourceSource.decrSizeOfLogQueue(lastQueueSize);
146 lastQueueSize = 0;
147 }
148
149
150
151
152
153 public Long getAgeOfLastShippedOp() {
154 return singleSourceSource.getLastShippedAge();
155 }
156
157
158
159
160
161 public int getSizeOfLogQueue() {
162 return this.lastQueueSize;
163 }
164
165
166
167
168
169 public long getTimeStampOfLastShippedOp() {
170 return lastTimestamp;
171 }
172
173
174
175
176
177 public String getPeerID() {
178 return id;
179 }
180 }