Github user karanmehta93 commented on a diff in the pull request: https://github.com/apache/phoenix/pull/315#discussion_r207001759 --- Diff: phoenix-core/src/main/java/org/apache/phoenix/monitoring/GlobalMetricRegistriesAdapter.java --- @@ -0,0 +1,167 @@ +/* + * 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.phoenix.monitoring; + +import java.util.Iterator; +import java.util.Map; +import java.util.Map.Entry; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.hbase.metrics.Counter; +import org.apache.hadoop.hbase.metrics.Gauge; +import org.apache.hadoop.hbase.metrics.Histogram; +import org.apache.hadoop.hbase.metrics.Meter; +import org.apache.hadoop.hbase.metrics.Metric; +import org.apache.hadoop.hbase.metrics.MetricRegistry; +import org.apache.hadoop.hbase.metrics.MetricRegistryInfo; +import org.apache.hadoop.hbase.metrics.Timer; +import org.apache.hadoop.metrics2.MetricsCollector; +import org.apache.hadoop.metrics2.MetricsInfo; +import org.apache.hadoop.metrics2.MetricsRecordBuilder; +import org.apache.hadoop.metrics2.MetricsSource; +import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem; +import org.apache.hadoop.metrics2.lib.Interns; +import org.apache.hadoop.metrics2.lib.MutableHistogram; +import org.apache.hadoop.metrics2.source.JvmMetrics; + +/** + * Contents mostly copied from GlobalMetricRegistriesAdapter class from hbase-hadoop2-compat + * The adapter attaches HBase's MetricRegistry to Hadoop's DefaultMetricsSystem + * Doesn't handle dynamic attach/detach of registries + */ +public class GlobalMetricRegistriesAdapter { + + private static final Log LOG = LogFactory.getLog(GlobalMetricRegistriesAdapter.class); + private static GlobalMetricRegistriesAdapter INSTANCE; + + private GlobalMetricRegistriesAdapter() { + DefaultMetricsSystem.initialize("HBase"); + JvmMetrics.initSingleton("HBase", ""); --- End diff -- I am sorry, I didn't you on this one. Could you elaborate? Also, I realized that stopping JVM metrics from Phoenix Level is not an option here. Since phoenix embeds hbase-client which instantiates JVM Metrics by default. Checkout this stack trace. ` init:57, BaseSourceImpl$DefaultMetricsSystemInitializer (org.apache.hadoop.hbase.metrics) <init>:112, BaseSourceImpl (org.apache.hadoop.hbase.metrics) <init>:56, MetricsZooKeeperSourceImpl (org.apache.hadoop.hbase.zookeeper) <init>:51, MetricsZooKeeperSourceImpl (org.apache.hadoop.hbase.zookeeper) newInstance0:-1, NativeConstructorAccessorImpl (sun.reflect) newInstance:62, NativeConstructorAccessorImpl (sun.reflect) newInstance:45, DelegatingConstructorAccessorImpl (sun.reflect) newInstance:423, Constructor (java.lang.reflect) newInstance:442, Class (java.lang) nextService:380, ServiceLoader$LazyIterator (java.util) next:404, ServiceLoader$LazyIterator (java.util) next:480, ServiceLoader$1 (java.util) getInstance:59, CompatibilitySingletonFactory (org.apache.hadoop.hbase) <init>:38, MetricsZooKeeper (org.apache.hadoop.hbase.zookeeper) <init>:130, RecoverableZooKeeper (org.apache.hadoop.hbase.zookeeper) connect:143, ZKUtil (org.apache.hadoop.hbase.zookeeper) <init>:181, ZooKeeperWatcher (org.apache.hadoop.hbase.zookeeper) <init>:155, ZooKeeperWatcher (org.apache.hadoop.hbase.zookeeper) <init>:43, ZooKeeperKeepAliveConnection (org.apache.hadoop.hbase.client) getKeepAliveZooKeeperWatcher:1737, ConnectionManager$HConnectionImplementation (org.apache.hadoop.hbase.client) getClusterId:104, ZooKeeperRegistry (org.apache.hadoop.hbase.client) retrieveClusterId:945, ConnectionManager$HConnectionImplementation (org.apache.hadoop.hbase.client) <init>:721, ConnectionManager$HConnectionImplementation (org.apache.hadoop.hbase.client) newInstance0:-1, NativeConstructorAccessorImpl (sun.reflect) newInstance:62, NativeConstructorAccessorImpl (sun.reflect) newInstance:45, DelegatingConstructorAccessorImpl (sun.reflect) newInstance:423, Constructor (java.lang.reflect) createConnection:238, ConnectionFactory (org.apache.hadoop.hbase.client) createConnection:439, ConnectionManager (org.apache.hadoop.hbase.client) createConnectionInternal:348, ConnectionManager (org.apache.hadoop.hbase.client) createConnection:144, HConnectionManager (org.apache.hadoop.hbase.client) createConnection:47, HConnectionFactory$HConnectionFactoryImpl (org.apache.phoenix.query) openConnection:428, ConnectionQueryServicesImpl (org.apache.phoenix.query) access$400:270, ConnectionQueryServicesImpl (org.apache.phoenix.query) call:2539, ConnectionQueryServicesImpl$12 (org.apache.phoenix.query) call:2515, ConnectionQueryServicesImpl$12 (org.apache.phoenix.query) call:76, PhoenixContextExecutor (org.apache.phoenix.util) init:2515, ConnectionQueryServicesImpl (org.apache.phoenix.query) getConnectionQueryServices:255, PhoenixDriver (org.apache.phoenix.jdbc) createConnection:150, PhoenixEmbeddedDriver (org.apache.phoenix.jdbc) connect:221, PhoenixDriver (org.apache.phoenix.jdbc) getConnection:664, DriverManager (java.sql) getConnection:208, DriverManager (java.sql) createConnection:640, JdbcMeta (org.apache.calcite.avatica.jdbc) openConnection:625, JdbcMeta (org.apache.calcite.avatica.jdbc) apply:285, LocalService (org.apache.calcite.avatica.remote) accept:1770, Service$OpenConnectionRequest (org.apache.calcite.avatica.remote) accept:1750, Service$OpenConnectionRequest (org.apache.calcite.avatica.remote) apply:94, AbstractHandler (org.apache.calcite.avatica.remote) apply:46, ProtobufHandler (org.apache.calcite.avatica.remote) handle:127, AvaticaProtobufHandler (org.apache.calcite.avatica.server) handle:52, HandlerList (org.eclipse.jetty.server.handler) handle:97, HandlerWrapper (org.eclipse.jetty.server.handler) handle:499, Server (org.eclipse.jetty.server) handle:311, HttpChannel (org.eclipse.jetty.server) onFillable:257, HttpConnection (org.eclipse.jetty.server) run:544, AbstractConnection$2 (org.eclipse.jetty.io) runJob:635, QueuedThreadPool (org.eclipse.jetty.util.thread) run:555, QueuedThreadPool$3 (org.eclipse.jetty.util.thread) run:748, Thread (java.lang) `
---