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 public static final String SOURCE_SIZE_OF_LOG_QUEUE =
38 MetricsReplicationSourceSource.SOURCE_SIZE_OF_LOG_QUEUE;
39 public static final String SOURCE_AGE_OF_LAST_SHIPPED_OP =
40 MetricsReplicationSourceSource.SOURCE_AGE_OF_LAST_SHIPPED_OP;
41 public static final String SOURCE_LOG_EDITS_READ =
42 MetricsReplicationSourceSource.SOURCE_LOG_READ_IN_EDITS;
43 public static final String SOURCE_LOG_EDITS_FILTERED =
44 MetricsReplicationSourceSource.SOURCE_LOG_EDITS_FILTERED;
45 public static final String SOURCE_SHIPPED_BATCHES =
46 MetricsReplicationSourceSource.SOURCE_SHIPPED_BATCHES;
47 public static final String SOURCE_SHIPPED_KBS =
48 MetricsReplicationSourceSource.SOURCE_SHIPPED_KBS;
49 public static final String SOURCE_SHIPPED_OPS =
50 MetricsReplicationSourceSource.SOURCE_SHIPPED_OPS;
51 public static final String SOURCE_LOG_READ_IN_BYTES =
52 MetricsReplicationSourceSource.SOURCE_LOG_READ_IN_BYTES;
53
54 private long lastTimestamp = 0;
55 private int lastQueueSize = 0;
56 private String id;
57
58 private final MetricsReplicationSourceSource singleSourceSource;
59 private final MetricsReplicationSourceSource globalSourceSource;
60
61
62
63
64
65
66 public MetricsSource(String id) {
67 this.id = id;
68 singleSourceSource =
69 CompatibilitySingletonFactory.getInstance(MetricsReplicationSourceFactory.class)
70 .getSource(id);
71 globalSourceSource =
72 CompatibilitySingletonFactory.getInstance(MetricsReplicationSourceFactory.class)
73 .getGlobalSource();
74 }
75
76
77
78
79
80
81 public void setAgeOfLastShippedOp(long timestamp) {
82 long age = EnvironmentEdgeManager.currentTimeMillis() - timestamp;
83 singleSourceSource.setLastShippedAge(age);
84 globalSourceSource.setLastShippedAge(age);
85 this.lastTimestamp = timestamp;
86 }
87
88
89
90
91
92 public void refreshAgeOfLastShippedOp() {
93 if (this.lastTimestamp > 0) {
94 setAgeOfLastShippedOp(this.lastTimestamp);
95 }
96 }
97
98
99
100
101
102
103 public void setSizeOfLogQueue(int size) {
104 singleSourceSource.setSizeOfLogQueue(size);
105 globalSourceSource.incrSizeOfLogQueue(size - lastQueueSize);
106 lastQueueSize = size;
107 }
108
109
110
111
112
113
114 private void incrLogEditsRead(long delta) {
115 singleSourceSource.incrLogReadInEdits(delta);
116 globalSourceSource.incrLogReadInEdits(delta);
117 }
118
119
120 public void incrLogEditsRead() {
121 incrLogEditsRead(1);
122 }
123
124
125
126
127
128
129 private void incrLogEditsFiltered(long delta) {
130 singleSourceSource.incrLogEditsFiltered(delta);
131 globalSourceSource.incrLogEditsFiltered(delta);
132 }
133
134
135 public void incrLogEditsFiltered() {
136 incrLogEditsFiltered(1);
137 }
138
139
140
141
142
143
144 public void shipBatch(long batchSize, int sizeInKB) {
145 singleSourceSource.incrBatchesShipped(1);
146 globalSourceSource.incrBatchesShipped(1);
147
148 singleSourceSource.incrOpsShipped(batchSize);
149 globalSourceSource.incrOpsShipped(batchSize);
150
151 singleSourceSource.incrShippedKBs(sizeInKB);
152 globalSourceSource.incrShippedKBs(sizeInKB);
153 }
154
155
156 public void incrLogReadInBytes(long readInBytes) {
157 singleSourceSource.incrLogReadInBytes(readInBytes);
158 globalSourceSource.incrLogReadInBytes(readInBytes);
159 }
160
161
162 public void clear() {
163 singleSourceSource.clear();
164 globalSourceSource.decrSizeOfLogQueue(lastQueueSize);
165 lastQueueSize = 0;
166 }
167
168
169
170
171
172 public Long getAgeOfLastShippedOp() {
173 return singleSourceSource.getLastShippedAge();
174 }
175
176
177
178
179
180 public int getSizeOfLogQueue() {
181 return this.lastQueueSize;
182 }
183
184
185
186
187
188 public long getTimeStampOfLastShippedOp() {
189 return lastTimestamp;
190 }
191
192
193
194
195
196 public String getPeerID() {
197 return id;
198 }
199 }