You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2012/08/02 18:58:37 UTC

svn commit: r1368598 [2/2] - in /hbase/trunk: conf/ hbase-hadoop-compat/ hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/master/ hbase-hadoop-compat/src/main/java/org/apache/hadoop/hb...

Modified: hbase/trunk/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/metrics/BaseMetricsSourceImplTest.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/metrics/BaseMetricsSourceImplTest.java?rev=1368598&r1=1368597&r2=1368598&view=diff
==============================================================================
--- hbase/trunk/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/metrics/BaseMetricsSourceImplTest.java (original)
+++ hbase/trunk/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/metrics/BaseMetricsSourceImplTest.java Thu Aug  2 16:58:35 2012
@@ -18,6 +18,8 @@
 
 package org.apache.hadoop.hbase.metrics;
 
+import org.apache.hadoop.metrics2.lib.MutableCounterLong;
+import org.apache.hadoop.metrics2.lib.MutableGaugeLong;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
@@ -39,36 +41,36 @@ public class BaseMetricsSourceImplTest {
   @Test
   public void testSetGauge() throws Exception {
     bmsi.setGauge("testset", 100);
-    assertEquals(100, bmsi.gauges.get("testset").value());
+    assertEquals(100, ((MutableGaugeLong) bmsi.metricsRegistry.get("testset")).value());
     bmsi.setGauge("testset", 300);
-    assertEquals(300, bmsi.gauges.get("testset").value());
+    assertEquals(300, ((MutableGaugeLong) bmsi.metricsRegistry.get("testset")).value());
 
   }
 
   @Test
   public void testIncGauge() throws Exception {
     bmsi.incGauge("testincgauge", 100);
-    assertEquals(100, bmsi.gauges.get("testincgauge").value());
+    assertEquals(100, ((MutableGaugeLong) bmsi.metricsRegistry.get("testincgauge")).value());
     bmsi.incGauge("testincgauge", 100);
-    assertEquals(200, bmsi.gauges.get("testincgauge").value());
+    assertEquals(200, ((MutableGaugeLong) bmsi.metricsRegistry.get("testincgauge")).value());
 
   }
 
   @Test
   public void testDecGauge() throws Exception {
     bmsi.decGauge("testdec", 100);
-    assertEquals(-100, bmsi.gauges.get("testdec").value());
+    assertEquals(-100, ((MutableGaugeLong) bmsi.metricsRegistry.get("testdec")).value());
     bmsi.decGauge("testdec", 100);
-    assertEquals(-200, bmsi.gauges.get("testdec").value());
+    assertEquals(-200, ((MutableGaugeLong) bmsi.metricsRegistry.get("testdec")).value());
 
   }
 
   @Test
   public void testIncCounters() throws Exception {
     bmsi.incCounters("testinccounter", 100);
-    assertEquals(100, bmsi.counters.get("testinccounter").value());
+    assertEquals(100, ((MutableCounterLong) bmsi.metricsRegistry.get("testinccounter")).value());
     bmsi.incCounters("testinccounter", 100);
-    assertEquals(200, bmsi.counters.get("testinccounter").value());
+    assertEquals(200, ((MutableCounterLong) bmsi.metricsRegistry.get("testinccounter")).value());
 
   }
 
@@ -76,13 +78,13 @@ public class BaseMetricsSourceImplTest {
   public void testRemoveGauge() throws Exception {
     bmsi.setGauge("testrmgauge", 100);
     bmsi.removeGauge("testrmgauge");
-    assertNull(bmsi.gauges.get("testrmgauge"));
+    assertNull(bmsi.metricsRegistry.get("testrmgauge"));
   }
 
   @Test
   public void testRemoveCounter() throws Exception {
     bmsi.incCounters("testrmcounter", 100);
     bmsi.removeCounter("testrmcounter");
-    assertNull(bmsi.counters.get("testrmcounter"));
+    assertNull(bmsi.metricsRegistry.get("testrmcounter"));
   }
 }

Modified: hbase/trunk/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/replication/regionserver/metrics/ReplicationMetricsSourceImplTest.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/replication/regionserver/metrics/ReplicationMetricsSourceImplTest.java?rev=1368598&r1=1368597&r2=1368598&view=diff
==============================================================================
--- hbase/trunk/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/replication/regionserver/metrics/ReplicationMetricsSourceImplTest.java (original)
+++ hbase/trunk/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/replication/regionserver/metrics/ReplicationMetricsSourceImplTest.java Thu Aug  2 16:58:35 2012
@@ -18,6 +18,7 @@
 
 package org.apache.hadoop.hbase.replication.regionserver.metrics;
 
+import org.apache.hadoop.hbase.CompatibilitySingletonFactory;
 import org.junit.Test;
 
 import static org.junit.Assert.assertTrue;
@@ -27,7 +28,8 @@ public class ReplicationMetricsSourceImp
 
   @Test
   public void testGetInstance() throws Exception {
-    ReplicationMetricsSource rms = ReplicationMetricsSourceFactory.getInstance();
+    ReplicationMetricsSource rms = CompatibilitySingletonFactory
+        .getInstance(ReplicationMetricsSource.class);
     assertTrue(rms instanceof ReplicationMetricsSourceImpl);
   }
 }

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java?rev=1368598&r1=1368597&r2=1368598&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java Thu Aug  2 16:58:35 2012
@@ -49,6 +49,7 @@ import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.Abortable;
 import org.apache.hadoop.hbase.Chore;
 import org.apache.hadoop.hbase.ClusterStatus;
+import org.apache.hadoop.hbase.CompatibilitySingletonFactory;
 import org.apache.hadoop.hbase.DeserializationException;
 import org.apache.hadoop.hbase.HColumnDescriptor;
 import org.apache.hadoop.hbase.HConstants;
@@ -80,6 +81,8 @@ import org.apache.hadoop.hbase.executor.
 import org.apache.hadoop.hbase.executor.ExecutorService.ExecutorType;
 import org.apache.hadoop.hbase.ipc.HBaseRPC;
 import org.apache.hadoop.hbase.ipc.HBaseServer;
+import org.apache.hadoop.hbase.master.metrics.MXBeanImpl;
+import org.apache.hadoop.hbase.metrics.MBeanSource;
 import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
 import org.apache.hadoop.hbase.protobuf.ResponseConverter;
 import org.apache.hadoop.hbase.ipc.ProtocolSignature;
@@ -399,6 +402,10 @@ Server {
     
   }
 
+  MasterMetrics getMetrics() {
+    return metrics;
+  }
+
   /**
    * Main processing loop for the HMaster.
    * <ol>
@@ -2252,7 +2259,8 @@ Server {
    */
   void registerMBean() {
     MXBeanImpl mxBeanInfo = MXBeanImpl.init(this);
-    MBeanUtil.registerMBean("Master", "Master", mxBeanInfo);
+    mxBean = CompatibilitySingletonFactory.getInstance(
+            MBeanSource.class).register("hbase", "HMaster,sub=MXBean", mxBeanInfo);
     LOG.info("Registered HMaster MXBean");
   }
 

Added: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/metrics/MXBean.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/metrics/MXBean.java?rev=1368598&view=auto
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/metrics/MXBean.java (added)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/metrics/MXBean.java Thu Aug  2 16:58:35 2012
@@ -0,0 +1,110 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.master.metrics;
+
+import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.classification.InterfaceStability;
+
+/**
+ * This is the JMX management interface for Hbase master information
+ */
+@InterfaceStability.Evolving
+@InterfaceAudience.Private
+public interface MXBean {
+
+  /**
+   * Required for MXBean implementation
+   */
+  public static interface RegionsInTransitionInfo {
+    /**
+     * Name of region in transition
+     */
+    public String getRegionName();
+    /**
+     * Current transition state
+     */
+    public String getRegionState();
+    /**
+     * Get Region Server name
+     */
+    public String getRegionServerName();
+    /**
+     * Get last update time
+     */
+    public long getLastUpdateTime();
+  }
+
+  /**
+   * Get ServerName
+   */
+  public String getServerName();
+
+  /**
+   * Get Average Load
+   * @return Average Load
+   */
+  public double getAverageLoad();
+
+  /**
+   * Get the Cluster ID
+   * @return Cluster ID
+   */
+  public String getClusterId();
+
+  /**
+   * Get the Zookeeper Quorum Info
+   * @return Zookeeper Quorum Info
+   */
+  public String getZookeeperQuorum();
+
+  /**
+   * Get the co-processors
+   * @return Co-processors
+   */
+  public String[] getCoprocessors();
+
+  /**
+   * Get hbase master start time
+   * @return Start time of master in milliseconds
+   */
+  public long getMasterStartTime();
+
+  /**
+   * Get the hbase master active time
+   * @return Time in milliseconds when master became active
+   */
+  public long getMasterActiveTime();
+
+  /**
+   * Whether this master is the active master
+   * @return True if this is the active master
+   */
+  public boolean getIsActiveMaster();
+
+  /**
+   * Get the live region servers
+   * @return Live region servers
+   */
+  public int getRegionServers();
+
+  /**
+   * Get the dead region servers
+   * @return Dead region Servers
+   */
+  public String[] getDeadRegionServers();
+}

Added: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/metrics/MXBeanImpl.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/metrics/MXBeanImpl.java?rev=1368598&view=auto
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/metrics/MXBeanImpl.java (added)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/metrics/MXBeanImpl.java Thu Aug  2 16:58:35 2012
@@ -0,0 +1,103 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.hadoop.hbase.master.metrics;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.hadoop.hbase.ServerLoad;
+import org.apache.hadoop.hbase.ServerName;
+import org.apache.hadoop.hbase.master.RegionState;
+import org.apache.hadoop.hbase.master.HMaster;
+
+/**
+ * Impl for exposing HMaster Information through JMX
+ */
+public class MXBeanImpl implements MXBean {
+
+  private final HMaster master;
+
+  private static MXBeanImpl instance = null;
+  public synchronized static MXBeanImpl init(final HMaster master) {
+    if (instance == null) {
+      instance = new MXBeanImpl(master);
+    }
+    return instance;
+  }
+
+  protected MXBeanImpl(final HMaster master) {
+    this.master = master;
+  }
+
+  @Override
+  public double getAverageLoad() {
+    return master.getAverageLoad();
+  }
+
+  @Override
+  public String getClusterId() {
+    return master.getClusterId();
+  }
+
+  @Override
+  public String getZookeeperQuorum() {
+    return master.getZooKeeperWatcher().getQuorum();
+  }
+
+  @Override
+  public String[] getCoprocessors() {
+    return master.getCoprocessors();
+  }
+
+  @Override
+  public long getMasterStartTime() {
+    return master.getMasterStartTime();
+  }
+
+  @Override
+  public long getMasterActiveTime() {
+    return master.getMasterActiveTime();
+  }
+
+  @Override
+  public int getRegionServers() {
+    return this.master.getServerManager().getOnlineServers().size();
+  }
+
+  @Override
+  public String[] getDeadRegionServers() {
+    List<String> deadServers = new ArrayList<String>();
+    for (ServerName name : master.getServerManager().getDeadServers()) {
+      deadServers.add(name.getHostAndPort());
+    }
+    return deadServers.toArray(new String[0]);
+  }
+
+  @Override
+  public String getServerName() {
+    return master.getServerName().getServerName();
+  }
+
+  @Override
+  public boolean getIsActiveMaster() {
+    return master.isActiveMaster();
+  }
+}

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/metrics/MasterMetrics.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/metrics/MasterMetrics.java?rev=1368598&r1=1368597&r2=1368598&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/metrics/MasterMetrics.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/master/metrics/MasterMetrics.java Thu Aug  2 16:58:35 2012
@@ -17,24 +17,11 @@
  */
 package org.apache.hadoop.hbase.master.metrics;
 
-import java.io.IOException;
-
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.classification.InterfaceAudience;
-import org.apache.hadoop.hbase.metrics.HBaseInfo;
-import org.apache.hadoop.hbase.metrics.MetricsRate;
-import org.apache.hadoop.hbase.metrics.histogram.MetricsHistogram;
-import org.apache.hadoop.metrics.ContextFactory;
-import org.apache.hadoop.metrics.MetricsContext;
-import org.apache.hadoop.metrics.MetricsRecord;
-import org.apache.hadoop.metrics.MetricsUtil;
-import org.apache.hadoop.metrics.Updater;
-import org.apache.hadoop.metrics.jvm.JvmMetrics;
-import org.apache.hadoop.metrics.util.MetricsIntValue;
-import org.apache.hadoop.metrics.util.MetricsLongValue;
-import org.apache.hadoop.metrics.util.MetricsRegistry;
-
+import org.apache.hadoop.classification.InterfaceStability;
+import org.apache.hadoop.hbase.CompatibilitySingletonFactory;
 
 /**
  * This class is for maintaining the various master statistics
@@ -43,124 +30,38 @@ import org.apache.hadoop.metrics.util.Me
  * This class has a number of metrics variables that are publicly accessible;
  * these variables (objects) have methods to update their values.
  */
+@InterfaceStability.Evolving
 @InterfaceAudience.Private
-public class MasterMetrics implements Updater {
+public class MasterMetrics  {
   private final Log LOG = LogFactory.getLog(this.getClass());
-  private final MetricsRecord metricsRecord;
-  private final MetricsRegistry registry = new MetricsRegistry();
-  private final MasterStatistics masterStatistics;
-
-  private long lastUpdate = System.currentTimeMillis();
-  private long lastExtUpdate = System.currentTimeMillis();
-  private long extendedPeriod = 0;
-/*
-   * Count of requests to the cluster since last call to metrics update
-   */
-  private final MetricsRate cluster_requests =
-    new MetricsRate("cluster_requests", registry);
-
-  /** Time it takes to finish HLog.splitLog() */
-  final MetricsHistogram splitTime = new MetricsHistogram("splitTime", registry);
-
-  /** Size of HLog files being split */
-  final MetricsHistogram splitSize = new MetricsHistogram("splitSize", registry);
-
-  /**
-    * Regions in Transition metrics such as number of RIT regions, oldest
-    * RIT time and number of such regions that are in transition
-    * for more than a specified threshold.
-    */
-  public final MetricsIntValue ritCount =
-    new MetricsIntValue("ritCount", registry);
-  public final MetricsIntValue ritCountOverThreshold =
-    new MetricsIntValue("ritCountOverThreshold", registry);
-  public final MetricsLongValue ritOldestAge =
-    new MetricsLongValue("ritOldestAge", registry);
+  private MasterMetricsSource masterMetricsSource;
 
   public MasterMetrics(final String name) {
-    MetricsContext context = MetricsUtil.getContext("hbase");
-    metricsRecord = MetricsUtil.createRecord(context, "master");
-    metricsRecord.setTag("Master", name);
-    context.registerUpdater(this);
-    JvmMetrics.init("Master", name);
-    HBaseInfo.init();
-
-    // expose the MBean for metrics
-    masterStatistics = new MasterStatistics(this.registry);
-
-    // get custom attributes
-    try {
-      Object m = 
-        ContextFactory.getFactory().getAttribute("hbase.extendedperiod");
-      if (m instanceof String) {
-        this.extendedPeriod = Long.parseLong((String) m)*1000;
-      }
-    } catch (IOException ioe) {
-      LOG.info("Couldn't load ContextFactory for Metrics config info");
-    }
-
-    LOG.info("Initialized");
-  }
-
-  public void shutdown() {
-    if (masterStatistics != null)
-      masterStatistics.shutdown();
+    masterMetricsSource = CompatibilitySingletonFactory.getInstance(MasterMetricsSource.class);
   }
 
-  /**
-   * Since this object is a registered updater, this method will be called
-   * periodically, e.g. every 5 seconds.
-   * @param unused
-   */
-  public void doUpdates(MetricsContext unused) {
-    synchronized (this) {
-      this.lastUpdate = System.currentTimeMillis();
-
-      // has the extended period for long-living stats elapsed?
-      if (this.extendedPeriod > 0 &&
-          this.lastUpdate - this.lastExtUpdate >= this.extendedPeriod) {
-        this.lastExtUpdate = this.lastUpdate;
-        this.splitTime.clear();
-        this.splitSize.clear();
-        this.resetAllMinMax();
-      }
-
-      this.cluster_requests.pushMetric(metricsRecord);
-      this.splitTime.pushMetric(metricsRecord);
-      this.splitSize.pushMetric(metricsRecord);
-      this.ritCount.pushMetric(metricsRecord);
-      this.ritCountOverThreshold.pushMetric(metricsRecord);
-      this.ritOldestAge.pushMetric(metricsRecord);
-    }
-    this.metricsRecord.update();
+  // for unit-test usage
+  public MasterMetricsSource getMetricsSource() {
+    return masterMetricsSource;
   }
 
-  public void resetAllMinMax() {
-    // Nothing to do
-  }
-  
   /**
    * Record a single instance of a split
    * @param time time that the split took
    * @param size length of original HLogs that were split
    */
   public synchronized void addSplit(long time, long size) {
-    splitTime.update(time);
-    splitSize.update(size);
-  }
 
-  /**
-   * @return Count of requests.
-   */
-  public float getRequests() {
-    return this.cluster_requests.getPreviousIntervalValue();
+    //TODO use new metrics histogram
+
   }
 
   /**
    * @param inc How much to add to requests.
    */
   public void incrementRequests(final int inc) {
-    this.cluster_requests.inc(inc);
+    masterMetricsSource.incRequests(inc);
+
   }
 
   /**
@@ -168,7 +69,7 @@ public class MasterMetrics implements Up
    * @param ritCount
    */
   public void updateRITCount(int ritCount) {
-    this.ritCount.set(ritCount);
+    masterMetricsSource.setRIT(ritCount);
   }
 
   /**
@@ -177,13 +78,13 @@ public class MasterMetrics implements Up
    * @param ritCountOverThreshold
    */
   public void updateRITCountOverThreshold(int ritCountOverThreshold) {
-    this.ritCountOverThreshold.set(ritCountOverThreshold);
+    masterMetricsSource.setRITCountOverThreshold(ritCountOverThreshold);
   }
   /**
    * update the timestamp for oldest region in transition metrics.
    * @param timestamp
    */
   public void updateRITOldestAge(long timestamp) {
-    this.ritOldestAge.set(timestamp);
+    masterMetricsSource.setRITOldestAge(timestamp);
   }
 }

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/metrics/ReplicationSinkMetrics.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/metrics/ReplicationSinkMetrics.java?rev=1368598&r1=1368597&r2=1368598&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/metrics/ReplicationSinkMetrics.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/metrics/ReplicationSinkMetrics.java Thu Aug  2 16:58:35 2012
@@ -19,8 +19,7 @@
 package org.apache.hadoop.hbase.replication.regionserver.metrics;
 
 import org.apache.hadoop.classification.InterfaceAudience;
-import org.apache.hadoop.hbase.replication.regionserver.metrics.ReplicationMetricsSource;
-import org.apache.hadoop.hbase.replication.regionserver.metrics.ReplicationMetricsSourceFactory;
+import org.apache.hadoop.hbase.CompatibilitySingletonFactory;
 
 /**
  * This class is for maintaining the various replication statistics for a sink and publishing them
@@ -36,7 +35,7 @@ public class ReplicationSinkMetrics {
   private ReplicationMetricsSource rms;
 
   public ReplicationSinkMetrics() {
-    rms = ReplicationMetricsSourceFactory.getInstance();
+    rms = CompatibilitySingletonFactory.getInstance(ReplicationMetricsSource.class);
   }
 
   /**

Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/metrics/ReplicationSourceMetrics.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/metrics/ReplicationSourceMetrics.java?rev=1368598&r1=1368597&r2=1368598&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/metrics/ReplicationSourceMetrics.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/regionserver/metrics/ReplicationSourceMetrics.java Thu Aug  2 16:58:35 2012
@@ -21,6 +21,7 @@ package org.apache.hadoop.hbase.replicat
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.hbase.CompatibilitySingletonFactory;
 
 /**
  * This class is for maintaining the various replication statistics for a source and publishing them
@@ -65,7 +66,7 @@ public class ReplicationSourceMetrics {
     logEditsFilteredKey = "source." + id + ".logEditsFiltered";
     shippedBatchesKey = "source." + this.id + ".shippedBatches";
     shippedOpsKey = "source." + this.id + ".shippedOps";
-    rms = ReplicationMetricsSourceFactory.getInstance();
+    rms = CompatibilitySingletonFactory.getInstance(ReplicationMetricsSource.class);
   }
 
   /**

Modified: hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMXBean.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMXBean.java?rev=1368598&r1=1368597&r2=1368598&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMXBean.java (original)
+++ hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestMXBean.java Thu Aug  2 16:58:35 2012
@@ -25,6 +25,7 @@ import junit.framework.Assert;
 
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.ServerLoad;
+import org.apache.hadoop.hbase.master.metrics.MXBeanImpl;
 import org.apache.hadoop.hbase.regionserver.HRegionServer;
 import org.apache.hadoop.hbase.MediumTests;
 import org.junit.AfterClass;
@@ -48,22 +49,6 @@ public class TestMXBean {
     TEST_UTIL.shutdownMiniCluster();
   }
 
-  private void verifyRegionServers(Map<String, ServerLoad> regions) {
-    Set<String> expected = new HashSet<String>();
-    for (int i = 0; i < 4; ++i) {
-      HRegionServer rs = TEST_UTIL.getMiniHBaseCluster().getRegionServer(i);
-      expected.add(rs.getServerName().getServerName());
-    }
-
-    int found = 0;
-    for (java.util.Map.Entry<String, ServerLoad> entry : regions.entrySet()) {
-      if (expected.contains(entry.getKey())) {
-        ++found;
-      }
-    }
-    Assert.assertEquals(4, found);
-  }
-
   @Test
   public void testInfo() {
     HMaster master = TEST_UTIL.getHBaseCluster().getMaster();
@@ -77,20 +62,16 @@ public class TestMXBean {
     Assert.assertEquals(master.getCoprocessors().length,
         info.getCoprocessors().length);
     Assert.assertEquals(master.getServerManager().getOnlineServersList().size(),
-        info.getRegionServers().size());
-    Assert.assertEquals(master.getAssignmentManager().getRegionStates().isRegionsInTransition(),
-        info.getRegionsInTransition().length > 0);
-    Assert.assertTrue(info.getRegionServers().size() == 4);
+        info.getRegionServers());
+    Assert.assertTrue(info.getRegionServers() == 4);
 
     String zkServers = info.getZookeeperQuorum();
     Assert.assertEquals(zkServers.split(",").length,
         TEST_UTIL.getZkCluster().getZooKeeperServerNum());
 
-    verifyRegionServers(info.getRegionServers());
-
     TEST_UTIL.getMiniHBaseCluster().stopRegionServer(3, false);
     TEST_UTIL.getMiniHBaseCluster().waitOnRegionServer(3);
-    Assert.assertTrue(info.getRegionServers().size() == 3);
+    Assert.assertTrue(info.getRegionServers() == 3);
     Assert.assertTrue(info.getDeadRegionServers().length == 1);
 
   }