From 0fb6ee9d01881ca528d05a870d8aaf0ce23a280a Mon Sep 17 00:00:00 2001 From: Elliott Neil Clark Date: Tue, 24 Sep 2013 14:21:32 -0700 Subject: [PATCH] HBASE-9650 Per region metrics are not showing up for system tables. --- .../hbase/regionserver/MetricsRegionWrapper.java | 6 ++++++ .../hbase/regionserver/MetricsRegionSourceImpl.java | 10 +++++----- .../regionserver/TestMetricsRegionSourceImpl.java | 19 ++++++++++++------- .../hbase/regionserver/MetricsRegionSourceImpl.java | 10 +++++----- .../regionserver/TestMetricsRegionSourceImpl.java | 19 ++++++++++++------- .../regionserver/MetricsRegionWrapperImpl.java | 17 ++++++++++++++--- .../regionserver/MetricsRegionWrapperStub.java | 5 +++++ .../hbase/regionserver/TestRegionServerMetrics.java | 16 +++++++++++----- 8 files changed, 70 insertions(+), 32 deletions(-) diff --git hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapper.java hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapper.java index 2c533ea..e1929c4 100644 --- hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapper.java +++ hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapper.java @@ -32,6 +32,12 @@ public interface MetricsRegionWrapper { String getTableName(); /** + * Get the name of the namespace this table is in. + * @return String version of the namespace. Can't be empty. + */ + String getNamespace(); + + /** * Get the name of the region. * * @return The encoded name of the region. diff --git hbase-hadoop1-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.java hbase-hadoop1-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.java index 385c645..944cb6f 100644 --- hbase-hadoop1-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.java +++ hbase-hadoop1-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.java @@ -56,14 +56,14 @@ public class MetricsRegionSourceImpl implements MetricsRegionSource { agg.register(this); LOG.debug("Creating new MetricsRegionSourceImpl for table " + - regionWrapper.getTableName() + - " " + - regionWrapper.getRegionName()); + regionWrapper.getTableName() + " " + regionWrapper.getRegionName()); registry = agg.getMetricsRegistry(); - regionNamePrefix = "table." + regionWrapper.getTableName() + "." - + "region." + regionWrapper.getRegionName() + "."; + regionNamePrefix = "namespace_" + regionWrapper.getNamespace() + + "_table_" + regionWrapper.getTableName() + + "_region_" + regionWrapper.getRegionName() + + "_metric_"; String suffix = "Count"; diff --git hbase-hadoop1-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java hbase-hadoop1-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java index 89c0762..76319da 100644 --- hbase-hadoop1-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java +++ hbase-hadoop1-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java @@ -60,7 +60,12 @@ public class TestMetricsRegionSourceImpl { @Override public String getTableName() { - return null; //To change body of implemented methods use File | Settings | File Templates. + return null; + } + + @Override + public String getNamespace() { + return null; } @Override @@ -70,32 +75,32 @@ public class TestMetricsRegionSourceImpl { @Override public long getNumStores() { - return 0; //To change body of implemented methods use File | Settings | File Templates. + return 0; } @Override public long getNumStoreFiles() { - return 0; //To change body of implemented methods use File | Settings | File Templates. + return 0; } @Override public long getMemstoreSize() { - return 0; //To change body of implemented methods use File | Settings | File Templates. + return 0; } @Override public long getStoreFileSize() { - return 0; //To change body of implemented methods use File | Settings | File Templates. + return 0; } @Override public long getReadRequestCount() { - return 0; //To change body of implemented methods use File | Settings | File Templates. + return 0; } @Override public long getWriteRequestCount() { - return 0; //To change body of implemented methods use File | Settings | File Templates. + return 0; } } } diff --git hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.java hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.java index 05eadfc..94f2d4c 100644 --- hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.java +++ hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.java @@ -62,14 +62,14 @@ public class MetricsRegionSourceImpl implements MetricsRegionSource { agg.register(this); LOG.debug("Creating new MetricsRegionSourceImpl for table " + - regionWrapper.getTableName() + - " " + - regionWrapper.getRegionName()); + regionWrapper.getTableName() + " " + regionWrapper.getRegionName()); registry = agg.getMetricsRegistry(); - regionNamePrefix = "table." + regionWrapper.getTableName() + "." - + "region." + regionWrapper.getRegionName() + "."; + regionNamePrefix = "namespace_" + regionWrapper.getNamespace() + + "_table_" + regionWrapper.getTableName() + + "_region_" + regionWrapper.getRegionName() + + "_metric_"; String suffix = "Count"; diff --git hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java index 89c0762..76319da 100644 --- hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java +++ hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java @@ -60,7 +60,12 @@ public class TestMetricsRegionSourceImpl { @Override public String getTableName() { - return null; //To change body of implemented methods use File | Settings | File Templates. + return null; + } + + @Override + public String getNamespace() { + return null; } @Override @@ -70,32 +75,32 @@ public class TestMetricsRegionSourceImpl { @Override public long getNumStores() { - return 0; //To change body of implemented methods use File | Settings | File Templates. + return 0; } @Override public long getNumStoreFiles() { - return 0; //To change body of implemented methods use File | Settings | File Templates. + return 0; } @Override public long getMemstoreSize() { - return 0; //To change body of implemented methods use File | Settings | File Templates. + return 0; } @Override public long getStoreFileSize() { - return 0; //To change body of implemented methods use File | Settings | File Templates. + return 0; } @Override public long getReadRequestCount() { - return 0; //To change body of implemented methods use File | Settings | File Templates. + return 0; } @Override public long getWriteRequestCount() { - return 0; //To change body of implemented methods use File | Settings | File Templates. + return 0; } } } diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperImpl.java hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperImpl.java index 146ed3a..78eb8fa 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperImpl.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperImpl.java @@ -33,6 +33,7 @@ import java.util.concurrent.TimeUnit; public class MetricsRegionWrapperImpl implements MetricsRegionWrapper, Closeable { public static final int PERIOD = 45; + public static final String UNKNOWN = "unknown"; private final HRegion region; private ScheduledExecutorService executor; @@ -55,16 +56,26 @@ public class MetricsRegionWrapperImpl implements MetricsRegionWrapper, Closeable public String getTableName() { HTableDescriptor tableDesc = this.region.getTableDesc(); if (tableDesc == null) { - return ""; + return UNKNOWN; } - return tableDesc.getTableName().getNameAsString(); + return tableDesc.getTableName().getQualifierAsString(); } @Override + public String getNamespace() { + HTableDescriptor tableDesc = this.region.getTableDesc(); + if (tableDesc == null) { + return UNKNOWN; + } + return tableDesc.getTableName().getNamespaceAsString(); + } + + + @Override public String getRegionName() { HRegionInfo regionInfo = this.region.getRegionInfo(); if (regionInfo == null) { - return ""; + return UNKNOWN; } return regionInfo.getEncodedName(); } diff --git hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperStub.java hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperStub.java index eebec6a..c638502 100644 --- hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperStub.java +++ hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperStub.java @@ -26,6 +26,11 @@ public class MetricsRegionWrapperStub implements MetricsRegionWrapper { } @Override + public String getNamespace() { + return "TestNS"; + } + + @Override public String getRegionName() { return "DEADBEEF001"; } diff --git hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java index 33a951a..db6a4af 100644 --- hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java +++ hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestRegionServerMetrics.java @@ -141,9 +141,12 @@ public class TestRegionServerMetrics { .getMetrics() .getSource() .getAggregateSource(); - String prefix = "table."+tableNameString + ".region." + i.getEncodedName(); - metricsHelper.assertCounter(prefix + ".getNumOps", 10, agg); - metricsHelper.assertCounter(prefix + ".mutateCount", 30, agg); + String prefix = "namespace_"+NamespaceDescriptor.DEFAULT_NAMESPACE_NAME_STR+ + "_table_"+tableNameString + + "_region_" + i.getEncodedName()+ + "_metric"; + metricsHelper.assertCounter(prefix + "_getNumOps", 10, agg); + metricsHelper.assertCounter(prefix + "_mutateCount", 30, agg); } @@ -347,8 +350,11 @@ public class TestRegionServerMetrics { .getMetrics() .getSource() .getAggregateSource(); - String prefix = "table."+tableNameString + ".region." + i.getEncodedName(); - metricsHelper.assertCounter(prefix + ".scanNextNumOps", 30, agg); + String prefix = "namespace_"+NamespaceDescriptor.DEFAULT_NAMESPACE_NAME_STR+ + "_table_"+tableNameString + + "_region_" + i.getEncodedName()+ + "_metric"; + metricsHelper.assertCounter(prefix + "_scanNextNumOps", 30, agg); } } } -- 1.7.10.2 (Apple Git-33)