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
23
24
25
26 @InterfaceAudience.Private
27 public class MetricsRegionServerSourceFactoryImpl implements MetricsRegionServerSourceFactory {
28 public static enum FactoryStorage {
29 INSTANCE;
30 private Object aggLock = new Object();
31 private MetricsRegionAggregateSourceImpl aggImpl;
32 }
33
34 private synchronized MetricsRegionAggregateSourceImpl getAggregate() {
35 synchronized (FactoryStorage.INSTANCE.aggLock) {
36 if (FactoryStorage.INSTANCE.aggImpl == null) {
37 FactoryStorage.INSTANCE.aggImpl = new MetricsRegionAggregateSourceImpl();
38 }
39 return FactoryStorage.INSTANCE.aggImpl;
40 }
41 }
42
43
44 @Override
45 public synchronized MetricsRegionServerSource createServer(MetricsRegionServerWrapper regionServerWrapper) {
46 return new MetricsRegionServerSourceImpl(regionServerWrapper);
47 }
48
49 @Override
50 public MetricsRegionSource createRegion(MetricsRegionWrapper wrapper) {
51 return new MetricsRegionSourceImpl(wrapper, getAggregate());
52 }
53 }