1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.regionserver;
20
21 import org.apache.hadoop.hbase.classification.InterfaceAudience;
22 import org.apache.hadoop.hbase.io.MetricsIOSource;
23 import org.apache.hadoop.hbase.io.MetricsIOSourceImpl;
24 import org.apache.hadoop.hbase.io.MetricsIOWrapper;
25
26
27
28
29 @InterfaceAudience.Private
30 public class MetricsRegionServerSourceFactoryImpl implements MetricsRegionServerSourceFactory {
31 public static enum FactoryStorage {
32 INSTANCE;
33 private Object aggLock = new Object();
34 private MetricsRegionAggregateSourceImpl regionAggImpl;
35 private MetricsUserAggregateSourceImpl userAggImpl;
36 private MetricsTableAggregateSourceImpl tblAggImpl;
37 }
38
39 private synchronized MetricsRegionAggregateSourceImpl getRegionAggregate() {
40 synchronized (FactoryStorage.INSTANCE.aggLock) {
41 if (FactoryStorage.INSTANCE.regionAggImpl == null) {
42 FactoryStorage.INSTANCE.regionAggImpl = new MetricsRegionAggregateSourceImpl();
43 }
44 return FactoryStorage.INSTANCE.regionAggImpl;
45 }
46 }
47
48 public synchronized MetricsUserAggregateSourceImpl getUserAggregate() {
49 synchronized (FactoryStorage.INSTANCE.aggLock) {
50 if (FactoryStorage.INSTANCE.userAggImpl == null) {
51 FactoryStorage.INSTANCE.userAggImpl = new MetricsUserAggregateSourceImpl();
52 }
53 return FactoryStorage.INSTANCE.userAggImpl;
54 }
55 }
56
57 @Override
58 public synchronized MetricsTableAggregateSourceImpl getTableAggregate() {
59 synchronized (FactoryStorage.INSTANCE.aggLock) {
60 if (FactoryStorage.INSTANCE.tblAggImpl == null) {
61 FactoryStorage.INSTANCE.tblAggImpl = new MetricsTableAggregateSourceImpl();
62 }
63 return FactoryStorage.INSTANCE.tblAggImpl;
64 }
65 }
66
67 @Override
68 public synchronized MetricsRegionServerSource createServer(MetricsRegionServerWrapper regionServerWrapper) {
69 return new MetricsRegionServerSourceImpl(regionServerWrapper);
70 }
71
72 @Override
73 public MetricsRegionSource createRegion(MetricsRegionWrapper wrapper) {
74 return new MetricsRegionSourceImpl(wrapper, getRegionAggregate());
75 }
76
77 @Override
78 public MetricsTableSource createTable(String table, MetricsTableWrapperAggregate wrapper) {
79 return new MetricsTableSourceImpl(table, getTableAggregate(), wrapper);
80 }
81
82 public MetricsIOSource createIO(MetricsIOWrapper wrapper) {
83 return new MetricsIOSourceImpl(wrapper);
84 }
85
86 @Override
87 public org.apache.hadoop.hbase.regionserver.MetricsUserSource createUser(String shortUserName) {
88 return new org.apache.hadoop.hbase.regionserver.MetricsUserSourceImpl(shortUserName,
89 getUserAggregate());
90 }
91 }