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(
69 MetricsRegionServerWrapper regionServerWrapper) {
70 return new MetricsRegionServerSourceImpl(regionServerWrapper);
71 }
72
73 @Override
74 public MetricsRegionSource createRegion(MetricsRegionWrapper wrapper) {
75 return new MetricsRegionSourceImpl(wrapper, getRegionAggregate());
76 }
77
78 @Override
79 public MetricsUserSource createUser(String shortUserName) {
80 return new MetricsUserSourceImpl(shortUserName, getUserAggregate());
81 }
82
83 @Override
84 public MetricsTableSource createTable(String table, MetricsTableWrapperAggregate wrapper) {
85 return new MetricsTableSourceImpl(table, getTableAggregate(), wrapper);
86 }
87
88 public MetricsIOSource createIO(MetricsIOWrapper wrapper) {
89 return new MetricsIOSourceImpl(wrapper);
90 }
91 }