From 1a0b368681c46960104d530d9a57c496f930cbb7 Mon Sep 17 00:00:00 2001 From: Jesse Yates Date: Mon, 22 Sep 2014 15:00:00 -0700 Subject: [PATCH] Removing hadoop-compat modules + reflection There was some reflection and wrapping done in the metrics/tracing tools to support working with Hadoop1/2 (though hadoop1 support was never completed). Removing this extra code now that we don't want to support hadoop1 anymore --- phoenix-assembly/pom.xml | 10 +- phoenix-core/pom.xml | 23 +-- .../phoenix/trace/BaseTracingTestIT.java | 112 +++++----- .../trace/DisableableMetricsWriter.java | 27 +-- .../trace/Hadoop1TracingTestEnabler.java | 84 -------- .../phoenix/trace/PhoenixMetricImpl.java | 44 ---- .../trace/PhoenixMetricRecordImpl.java | 71 ------- .../trace/PhoenixTableMetricsWriterIT.java | 28 ++- .../apache/phoenix/trace/PhoenixTagImpl.java | 22 +- .../phoenix/trace/PhoenixTraceReaderIT.java | 61 +++--- .../trace/PhoenixTracingEndToEndIT.java | 59 ++---- .../apache/phoenix/trace/TracingTestUtil.java | 14 ++ .../apache/phoenix/hbase/index/Indexer.java | 4 +- .../apache/phoenix/metrics/MetricInfo.java | 0 .../org/apache/phoenix/metrics/Metrics.java | 24 +-- .../apache/phoenix/trace/MetricsInfoImpl.java | 0 ...icsWriter.java => PhoenixMetricsSink.java} | 124 +++++++----- .../phoenix/trace/TraceMetricSource.java | 43 ++-- .../org/apache/phoenix/trace/TraceReader.java | 12 +- .../apache/phoenix/trace/TracingUtils.java | 32 +-- .../apache/phoenix/trace/util/Tracing.java | 5 +- .../impl/ExposedMetricCounterLong.java | 3 +- .../impl/ExposedMetricsRecordImpl.java | 1 - .../metrics2/lib/ExposedMetricsInfoImpl.java | 4 +- .../apache/phoenix/metrics/LoggingSink.java | 18 +- .../phoenix/trace/TraceMetricsSourceTest.java | 2 +- phoenix-hadoop-compat/pom.xml | 89 -------- .../phoenix/metrics/MetricsManager.java | 58 ------ .../apache/phoenix/metrics/MetricsWriter.java | 31 --- .../metrics/PhoenixAbstractMetric.java | 30 --- .../phoenix/metrics/PhoenixMetricTag.java | 27 --- .../phoenix/metrics/PhoenixMetricsRecord.java | 35 ---- .../phoenix/trace/PhoenixSpanReceiver.java | 26 --- .../phoenix/trace/TestableMetricsWriter.java | 30 --- .../phoenix/metrics/TracingTestCompat.java | 45 ----- phoenix-hadoop2-compat/pom.xml | 77 ------- .../phoenix/metrics/MetricsManagerImpl.java | 71 ------- .../phoenix/trace/PhoenixMetricsSink.java | 191 ------------------ .../org.apache.phoenix.metrics.MetricsManager | 1 - ...g.apache.phoenix.trace.PhoenixSpanReceiver | 1 - ...apache.phoenix.trace.TestableMetricsWriter | 1 - .../trace/PhoenixMetricsWriterTest.java | 142 ------------- .../org/apache/phoenix/trace/TracingTest.java | 34 ---- pom.xml | 27 --- 44 files changed, 273 insertions(+), 1470 deletions(-) delete mode 100644 phoenix-core/src/it/java/org/apache/phoenix/trace/Hadoop1TracingTestEnabler.java delete mode 100644 phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixMetricImpl.java delete mode 100644 phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixMetricRecordImpl.java create mode 100644 phoenix-core/src/it/java/org/apache/phoenix/trace/TracingTestUtil.java rename {phoenix-hadoop-compat => phoenix-core}/src/main/java/org/apache/phoenix/metrics/MetricInfo.java (100%) rename {phoenix-hadoop-compat => phoenix-core}/src/main/java/org/apache/phoenix/metrics/Metrics.java (76%) rename {phoenix-hadoop2-compat => phoenix-core}/src/main/java/org/apache/phoenix/trace/MetricsInfoImpl.java (100%) rename phoenix-core/src/main/java/org/apache/phoenix/trace/{PhoenixTableMetricsWriter.java => PhoenixMetricsSink.java} (75%) rename {phoenix-hadoop2-compat => phoenix-core}/src/main/java/org/apache/phoenix/trace/TraceMetricSource.java (86%) rename phoenix-hadoop-compat/src/main/java/org/apache/phoenix/trace/TracingCompat.java => phoenix-core/src/main/java/org/apache/phoenix/trace/TracingUtils.java (64%) rename {phoenix-hadoop2-compat => phoenix-core}/src/test/java/org/apache/hadoop/metrics2/impl/ExposedMetricCounterLong.java (95%) rename {phoenix-hadoop2-compat => phoenix-core}/src/test/java/org/apache/hadoop/metrics2/impl/ExposedMetricsRecordImpl.java (96%) rename {phoenix-hadoop2-compat => phoenix-core}/src/test/java/org/apache/hadoop/metrics2/lib/ExposedMetricsInfoImpl.java (87%) rename {phoenix-hadoop-compat => phoenix-core}/src/test/java/org/apache/phoenix/metrics/LoggingSink.java (72%) rename {phoenix-hadoop2-compat => phoenix-core}/src/test/java/org/apache/phoenix/trace/TraceMetricsSourceTest.java (98%) delete mode 100644 phoenix-hadoop-compat/pom.xml delete mode 100644 phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/MetricsManager.java delete mode 100644 phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/MetricsWriter.java delete mode 100644 phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/PhoenixAbstractMetric.java delete mode 100644 phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/PhoenixMetricTag.java delete mode 100644 phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/PhoenixMetricsRecord.java delete mode 100644 phoenix-hadoop-compat/src/main/java/org/apache/phoenix/trace/PhoenixSpanReceiver.java delete mode 100644 phoenix-hadoop-compat/src/main/java/org/apache/phoenix/trace/TestableMetricsWriter.java delete mode 100644 phoenix-hadoop-compat/src/test/java/org/apache/phoenix/metrics/TracingTestCompat.java delete mode 100644 phoenix-hadoop2-compat/pom.xml delete mode 100644 phoenix-hadoop2-compat/src/main/java/org/apache/phoenix/metrics/MetricsManagerImpl.java delete mode 100644 phoenix-hadoop2-compat/src/main/java/org/apache/phoenix/trace/PhoenixMetricsSink.java delete mode 100644 phoenix-hadoop2-compat/src/main/resources/META-INF/services/org.apache.phoenix.metrics.MetricsManager delete mode 100644 phoenix-hadoop2-compat/src/main/resources/META-INF/services/org.apache.phoenix.trace.PhoenixSpanReceiver delete mode 100644 phoenix-hadoop2-compat/src/main/resources/META-INF/services/org.apache.phoenix.trace.TestableMetricsWriter delete mode 100644 phoenix-hadoop2-compat/src/test/java/org/apache/phoenix/trace/PhoenixMetricsWriterTest.java delete mode 100644 phoenix-hadoop2-compat/src/test/java/org/apache/phoenix/trace/TracingTest.java diff --git a/phoenix-assembly/pom.xml b/phoenix-assembly/pom.xml index ea2bdb1d681..6c29f324573 100644 --- a/phoenix-assembly/pom.xml +++ b/phoenix-assembly/pom.xml @@ -136,14 +136,6 @@ org.apache.phoenix phoenix-core - - org.apache.phoenix - phoenix-hadoop-compat - - - org.apache.phoenix - phoenix-hadoop2-compat - org.apache.phoenix phoenix-flume @@ -153,4 +145,4 @@ phoenix-pig - + \ No newline at end of file diff --git a/phoenix-core/pom.xml b/phoenix-core/pom.xml index bbd262bfa7a..90a7142ce83 100644 --- a/phoenix-core/pom.xml +++ b/phoenix-core/pom.xml @@ -205,17 +205,6 @@ - - - org.apache.phoenix - phoenix-hadoop-compat - - - org.apache.phoenix - phoenix-hadoop-compat - tests - test - org.antlr @@ -409,15 +398,5 @@ org.apache.hadoop hadoop-minicluster - - org.apache.phoenix - phoenix-hadoop2-compat - - - org.apache.phoenix - phoenix-hadoop2-compat - tests - test - - + \ No newline at end of file diff --git a/phoenix-core/src/it/java/org/apache/phoenix/trace/BaseTracingTestIT.java b/phoenix-core/src/it/java/org/apache/phoenix/trace/BaseTracingTestIT.java index 0f8a6660e36..f504d124124 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/trace/BaseTracingTestIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/trace/BaseTracingTestIT.java @@ -17,25 +17,18 @@ */ package org.apache.phoenix.trace; -import static org.apache.phoenix.util.PhoenixRuntime.ANNOTATION_ATTRIB_PREFIX; -import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; -import java.util.Collections; -import java.util.Map; -import java.util.Properties; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.metrics2.AbstractMetric; +import org.apache.hadoop.metrics2.MetricsInfo; +import org.apache.hadoop.metrics2.MetricsRecord; +import org.apache.hadoop.metrics2.MetricsTag; +import org.apache.hadoop.metrics2.impl.ExposedMetricCounterLong; +import org.apache.hadoop.metrics2.impl.ExposedMetricsRecordImpl; +import org.apache.hadoop.metrics2.lib.ExposedMetricsInfoImpl; import org.apache.phoenix.end2end.BaseHBaseManagedTimeIT; import org.apache.phoenix.end2end.HBaseManagedTimeTest; import org.apache.phoenix.metrics.MetricInfo; -import org.apache.phoenix.metrics.Metrics; -import org.apache.phoenix.metrics.PhoenixAbstractMetric; -import org.apache.phoenix.metrics.PhoenixMetricTag; -import org.apache.phoenix.metrics.PhoenixMetricsRecord; import org.apache.phoenix.query.QueryServicesOptions; import org.apache.phoenix.schema.TableNotFoundException; import org.apache.phoenix.trace.util.Tracing; @@ -45,6 +38,14 @@ import org.junit.Before; import org.junit.experimental.categories.Category; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.*; + +import static org.apache.phoenix.util.PhoenixRuntime.ANNOTATION_ATTRIB_PREFIX; +import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES; + /** * Base test for tracing tests - helps manage getting tracing/non-tracing * connections, as well as any supporting utils. @@ -53,36 +54,17 @@ public class BaseTracingTestIT extends BaseHBaseManagedTimeIT { private static final Log LOG = LogFactory.getLog(BaseTracingTestIT.class); - /** - * Hadoop1 doesn't yet support tracing (need metrics library support) so we just skip those - * tests for the moment - * @return true if the test should exit because some necessary classes are missing, or - * false if the tests can continue normally - */ - static boolean shouldEarlyExitForHadoop1Test() { - try { - // get a receiver for the spans - TracingCompat.newTraceMetricSource(); - // which also needs to a source for the metrics system - Metrics.getManager(); - return false; - } catch (RuntimeException e) { - LOG.error("Shouldn't run test because can't instantiate necessary metrics/tracing classes!"); - } - - return true; - } - @Before public void resetTracingTableIfExists() throws Exception { Connection conn = getConnectionWithoutTracing(); conn.setAutoCommit(true); try { - conn.createStatement().executeUpdate("DELETE FROM " + QueryServicesOptions.DEFAULT_TRACING_STATS_TABLE_NAME); + conn.createStatement().executeUpdate( + "DELETE FROM " + QueryServicesOptions.DEFAULT_TRACING_STATS_TABLE_NAME); } catch (TableNotFoundException ignore) { } } - + public static Connection getConnectionWithoutTracing() throws SQLException { Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); return getConnectionWithoutTracing(props); @@ -93,18 +75,19 @@ public static Connection getConnectionWithoutTracing(Properties props) throws SQ conn.setAutoCommit(false); return conn; } - - public static Connection getTracingConnection() throws Exception { - return getTracingConnection(Collections.emptyMap(), null); + + public static Connection getTracingConnection() throws Exception { + return getTracingConnection(Collections.emptyMap(), null); } - public static Connection getTracingConnection(Map customAnnotations, String tenantId) throws Exception { + public static Connection getTracingConnection(Map customAnnotations, + String tenantId) throws Exception { Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES); for (Map.Entry annot : customAnnotations.entrySet()) { - props.put(ANNOTATION_ATTRIB_PREFIX + annot.getKey(), annot.getValue()); + props.put(ANNOTATION_ATTRIB_PREFIX + annot.getKey(), annot.getValue()); } if (tenantId != null) { - props.put(PhoenixRuntime.TENANT_ID_ATTRIB, tenantId); + props.put(PhoenixRuntime.TENANT_ID_ATTRIB, tenantId); } return getConnectionWithTracingFrequency(props, Tracing.Frequency.ALWAYS); } @@ -115,34 +98,49 @@ public static Connection getConnectionWithTracingFrequency(Properties props, return DriverManager.getConnection(getUrl(), props); } - public static PhoenixMetricsRecord createRecord(long traceid, long parentid, long spanid, + public static MetricsRecord createRecord(long traceid, long parentid, long spanid, String desc, long startTime, long endTime, String hostname, String... tags) { - PhoenixMetricRecordImpl record = - new PhoenixMetricRecordImpl(TracingCompat.getTraceMetricName(traceid), desc); - PhoenixAbstractMetric span = new PhoenixMetricImpl(MetricInfo.SPAN.traceName, spanid); - record.addMetric(span); - PhoenixAbstractMetric parent = new PhoenixMetricImpl(MetricInfo.PARENT.traceName, parentid); - record.addMetric(parent); + List metrics = new ArrayList(); + AbstractMetric span = new ExposedMetricCounterLong(asInfo(MetricInfo + .SPAN.traceName), + spanid); + metrics.add(span); - PhoenixAbstractMetric start = new PhoenixMetricImpl(MetricInfo.START.traceName, startTime); - record.addMetric(start); + AbstractMetric parent = new ExposedMetricCounterLong(asInfo(MetricInfo.PARENT.traceName), + parentid); + metrics.add(parent); - PhoenixAbstractMetric end = new PhoenixMetricImpl(MetricInfo.END.traceName, endTime); - record.addMetric(end); + AbstractMetric start = new ExposedMetricCounterLong(asInfo(MetricInfo.START.traceName), + startTime); + metrics.add(start); + AbstractMetric + end = + new ExposedMetricCounterLong(asInfo(MetricInfo.END.traceName), endTime); + metrics.add(end); + + List tagsList = new ArrayList(); int tagCount = 0; for (String annotation : tags) { - PhoenixMetricTag tag = + MetricsTag tag = new PhoenixTagImpl(MetricInfo.ANNOTATION.traceName, Integer.toString(tagCount++), annotation); - record.addTag(tag); + tagsList.add(tag); } String hostnameValue = "host-name.value"; - PhoenixMetricTag hostnameTag = + MetricsTag hostnameTag = new PhoenixTagImpl(MetricInfo.HOSTNAME.traceName, "", hostnameValue); - record.addTag(hostnameTag); + tagsList.add(hostnameTag); + MetricsRecord record = + new ExposedMetricsRecordImpl(new ExposedMetricsInfoImpl(TracingUtils + .getTraceMetricName(traceid), desc), System.currentTimeMillis(), + tagsList, metrics); return record; } + + private static MetricsInfo asInfo(String name) { + return new ExposedMetricsInfoImpl(name, ""); + } } diff --git a/phoenix-core/src/it/java/org/apache/phoenix/trace/DisableableMetricsWriter.java b/phoenix-core/src/it/java/org/apache/phoenix/trace/DisableableMetricsWriter.java index a054bf28f0e..875717c6504 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/trace/DisableableMetricsWriter.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/trace/DisableableMetricsWriter.java @@ -17,31 +17,32 @@ */ package org.apache.phoenix.trace; -import java.sql.SQLException; -import java.util.concurrent.atomic.AtomicBoolean; - +import org.apache.commons.configuration.SubsetConfiguration; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.phoenix.metrics.MetricsWriter; -import org.apache.phoenix.metrics.PhoenixMetricsRecord; +import org.apache.hadoop.metrics2.MetricsRecord; +import org.apache.hadoop.metrics2.MetricsSink; + +import java.sql.SQLException; +import java.util.concurrent.atomic.AtomicBoolean; /** * */ -public class DisableableMetricsWriter implements MetricsWriter { +public class DisableableMetricsWriter implements MetricsSink { private static final Log LOG = LogFactory.getLog(DisableableMetricsWriter.class); - private PhoenixTableMetricsWriter writer; + private PhoenixMetricsSink writer; private AtomicBoolean disabled = new AtomicBoolean(false); - public DisableableMetricsWriter(PhoenixTableMetricsWriter writer) { + public DisableableMetricsWriter(PhoenixMetricsSink writer) { this.writer = writer; } @Override - public void initialize() { + public void init(SubsetConfiguration config) { if (this.disabled.get()) return; - writer.initialize(); + writer.init(config); } @Override @@ -55,9 +56,9 @@ public void flush() { } @Override - public void addMetrics(PhoenixMetricsRecord record) { + public void putMetrics(MetricsRecord record) { if (this.disabled.get()) return; - writer.addMetrics(record); + writer.putMetrics(record); } public void disable() { @@ -77,7 +78,7 @@ public void clear() { } } - public PhoenixTableMetricsWriter getDelegate() { + public PhoenixMetricsSink getDelegate() { return this.writer; } } diff --git a/phoenix-core/src/it/java/org/apache/phoenix/trace/Hadoop1TracingTestEnabler.java b/phoenix-core/src/it/java/org/apache/phoenix/trace/Hadoop1TracingTestEnabler.java deleted file mode 100644 index 9a592d3edd1..00000000000 --- a/phoenix-core/src/it/java/org/apache/phoenix/trace/Hadoop1TracingTestEnabler.java +++ /dev/null @@ -1,84 +0,0 @@ -/** - * 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.trace; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -import org.junit.runner.notification.RunNotifier; -import org.junit.runners.BlockJUnit4ClassRunner; -import org.junit.runners.model.FrameworkMethod; -import org.junit.runners.model.InitializationError; - -/** - * Test runner to run classes that depend on Hadoop1 compatibility that may not be present for the - * feature - */ -public class Hadoop1TracingTestEnabler extends BlockJUnit4ClassRunner { - - public Hadoop1TracingTestEnabler(Class klass) throws InitializationError { - super(klass); - } - - @Override - public void runChild(FrameworkMethod method, RunNotifier notifier) { - // if the class is already disabled, then we can disable on the class level, otherwise we - // just check the per-method - Hadoop1Disabled condition = - getTestClass().getJavaClass().getAnnotation(Hadoop1Disabled.class); - if (condition == null) { - condition = method - .getAnnotation(Hadoop1Disabled.class); - } - - // if this has the flag, then we want to disable it if hadoop1 is not enabled for that - // feature - if (condition != null && getEnabled(condition.value())) { - super.runChild(method, notifier); - } else { - notifier.fireTestIgnored(describeChild(method)); - } - } - - /** - * Simple check that just uses if-else logic. We can move to something more complex, policy - * based later when this gets more complex. - * @param feature name of the feature to check - * @return true if the test method is enabled for the given feature, false - * otherwise - */ - private boolean getEnabled(String feature) { - if (feature.equals("tracing")) { - return !BaseTracingTestIT.shouldEarlyExitForHadoop1Test(); - } - return true; - } - - /** - * Marker that a class/method should be disabled if hadoop1 features are not enabled. It takes a - * value for the Hadoop1 feature on which this class/method depends, for instance "tracing" is - * not supported in Hadoop1 (yet). - */ - @Target({ ElementType.TYPE, ElementType.METHOD }) - @Retention(RetentionPolicy.RUNTIME) - public static @interface Hadoop1Disabled { - String value(); - } -} diff --git a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixMetricImpl.java b/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixMetricImpl.java deleted file mode 100644 index 985504fbb48..00000000000 --- a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixMetricImpl.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * 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.trace; - -import org.apache.phoenix.metrics.PhoenixAbstractMetric; - -/** - * Simple metric implementation for testing - */ -public class PhoenixMetricImpl implements PhoenixAbstractMetric { - - private String name; - private Number value; - - public PhoenixMetricImpl(String name, Number value) { - this.name = name; - this.value = value; - } - - @Override - public String getName() { - return name; - } - - @Override - public Number value() { - return value; - } -} \ No newline at end of file diff --git a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixMetricRecordImpl.java b/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixMetricRecordImpl.java deleted file mode 100644 index 45cabf0b19a..00000000000 --- a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixMetricRecordImpl.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * 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.trace; - -import java.util.Collection; -import java.util.List; - -import org.apache.phoenix.metrics.PhoenixAbstractMetric; -import org.apache.phoenix.metrics.PhoenixMetricTag; -import org.apache.phoenix.metrics.PhoenixMetricsRecord; - -import com.google.common.collect.Lists; - -/** - * - */ -public class PhoenixMetricRecordImpl implements PhoenixMetricsRecord { - - private String name; - private String description; - private final List metrics = Lists.newArrayList(); - private final List tags = Lists.newArrayList(); - - public PhoenixMetricRecordImpl(String name, String description) { - this.name = name; - this.description = description; - } - - public void addMetric(PhoenixAbstractMetric metric) { - this.metrics.add(metric); - } - - public void addTag(PhoenixMetricTag tag) { - this.tags.add(tag); - } - - @Override - public String name() { - return this.name; - } - - @Override - public String description() { - return this.description; - } - - @Override - public Iterable metrics() { - return metrics; - } - - @Override - public Collection tags() { - return tags; - } -} \ No newline at end of file diff --git a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTableMetricsWriterIT.java b/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTableMetricsWriterIT.java index ecac21bc640..533b6f850f7 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTableMetricsWriterIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTableMetricsWriterIT.java @@ -17,25 +17,21 @@ */ package org.apache.phoenix.trace; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; - -import java.sql.Connection; -import java.util.Collection; - -import org.apache.phoenix.metrics.PhoenixMetricsRecord; +import org.apache.hadoop.metrics2.MetricsRecord; import org.apache.phoenix.query.QueryServicesOptions; -import org.apache.phoenix.trace.Hadoop1TracingTestEnabler.Hadoop1Disabled; import org.apache.phoenix.trace.TraceReader.SpanInfo; import org.apache.phoenix.trace.TraceReader.TraceHolder; import org.junit.Test; -import org.junit.runner.RunWith; + +import java.sql.Connection; +import java.util.Collection; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.fail; /** * Test that the logging sink stores the expected metrics/stats */ -@RunWith(Hadoop1TracingTestEnabler.class) -@Hadoop1Disabled("tracing") public class PhoenixTableMetricsWriterIT extends BaseTracingTestIT { /** @@ -45,7 +41,7 @@ public class PhoenixTableMetricsWriterIT extends BaseTracingTestIT { */ @Test public void testCreatesTable() throws Exception { - PhoenixTableMetricsWriter sink = new PhoenixTableMetricsWriter(); + PhoenixMetricsSink sink = new PhoenixMetricsSink(); Connection conn = getConnectionWithoutTracing(); sink.initForTesting(conn); @@ -69,13 +65,13 @@ public void testCreatesTable() throws Exception { /** * Simple metrics writing and reading check, that uses the standard wrapping in the - * {@link PhoenixMetricsWriter} + * {@link PhoenixMetricsSink} * @throws Exception on failure */ @Test public void writeMetrics() throws Exception { // hook up a phoenix sink - PhoenixTableMetricsWriter sink = new PhoenixTableMetricsWriter(); + PhoenixMetricsSink sink = new PhoenixMetricsSink(); Connection conn = getConnectionWithoutTracing(); sink.initForTesting(conn); @@ -88,12 +84,12 @@ public void writeMetrics() throws Exception { long endTime = 13; String annotation = "test annotation for a span"; String hostnameValue = "host-name.value"; - PhoenixMetricsRecord record = + MetricsRecord record = createRecord(traceid, parentid, spanid, description, startTime, endTime, hostnameValue, annotation); // actually write the record to the table - sink.addMetrics(record); + sink.putMetrics(record); sink.flush(); // make sure we only get expected stat entry (matcing the trace id), otherwise we could the diff --git a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTagImpl.java b/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTagImpl.java index c8e221963e5..a911a2c666d 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTagImpl.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTagImpl.java @@ -17,36 +17,22 @@ */ package org.apache.phoenix.trace; -import org.apache.phoenix.metrics.PhoenixMetricTag; +import org.apache.hadoop.metrics2.MetricsInfo; +import org.apache.hadoop.metrics2.MetricsTag; /** * Simple Tag implementation for testing */ -public class PhoenixTagImpl implements PhoenixMetricTag { +public class PhoenixTagImpl extends MetricsTag { private final String name; private final String description; private final String value; public PhoenixTagImpl(String name, String description, String value) { - super(); + super(new MetricsInfoImpl(name, description), value); this.name = name; this.description = description; this.value = value; } - - @Override - public String name() { - return name; - } - - @Override - public String description() { - return description; - } - - @Override - public String value() { - return value; - } } \ No newline at end of file diff --git a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTraceReaderIT.java b/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTraceReaderIT.java index f0a47bba543..d75e2810bed 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTraceReaderIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTraceReaderIT.java @@ -17,40 +17,31 @@ */ package org.apache.phoenix.trace; -import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; -import java.util.Properties; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.metrics2.AbstractMetric; +import org.apache.hadoop.metrics2.MetricsRecord; +import org.apache.hadoop.metrics2.MetricsTag; import org.apache.phoenix.end2end.HBaseManagedTimeTest; import org.apache.phoenix.metrics.MetricInfo; -import org.apache.phoenix.metrics.PhoenixAbstractMetric; -import org.apache.phoenix.metrics.PhoenixMetricTag; -import org.apache.phoenix.metrics.PhoenixMetricsRecord; -import org.apache.phoenix.trace.Hadoop1TracingTestEnabler.Hadoop1Disabled; import org.apache.phoenix.trace.TraceReader.SpanInfo; import org.apache.phoenix.trace.TraceReader.TraceHolder; import org.cloudera.htrace.Span; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.util.*; + +import static org.apache.phoenix.util.TestUtil.TEST_PROPERTIES; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; /** * Test that the {@link TraceReader} will correctly read traces written by the - * {@link PhoenixTableMetricsWriter} + * {@link org.apache.phoenix.trace.PhoenixMetricsSink} */ -@RunWith(Hadoop1TracingTestEnabler.class) -@Hadoop1Disabled("tracing") @Category(HBaseManagedTimeTest.class) public class PhoenixTraceReaderIT extends BaseTracingTestIT { @@ -58,14 +49,14 @@ public class PhoenixTraceReaderIT extends BaseTracingTestIT { @Test public void singleSpan() throws Exception { - PhoenixTableMetricsWriter sink = new PhoenixTableMetricsWriter(); + PhoenixMetricsSink sink = new PhoenixMetricsSink(); Properties props = new Properties(TEST_PROPERTIES); Connection conn = DriverManager.getConnection(getUrl(), props); sink.initForTesting(conn); // create a simple metrics record long traceid = 987654; - PhoenixMetricsRecord record = + MetricsRecord record = createAndFlush(sink, traceid, Span.ROOT_SPAN_ID, 10, "root", 12, 13, "host-name.value", "test annotation for a span"); @@ -73,12 +64,12 @@ public void singleSpan() throws Exception { validateTraces(Collections.singletonList(record), conn, traceid); } - private PhoenixMetricsRecord createAndFlush(PhoenixTableMetricsWriter sink, long traceid, + private MetricsRecord createAndFlush(PhoenixMetricsSink sink, long traceid, long parentid, long spanid, String desc, long startTime, long endTime, String hostname, String... tags) { - PhoenixMetricsRecord record = + MetricsRecord record = createRecord(traceid, parentid, spanid, desc, startTime, endTime, hostname, tags); - sink.addMetrics(record); + sink.putMetrics(record); sink.flush(); return record; } @@ -91,14 +82,14 @@ private PhoenixMetricsRecord createAndFlush(PhoenixTableMetricsWriter sink, long @Test public void testMultipleSpans() throws Exception { // hook up a phoenix sink - PhoenixTableMetricsWriter sink = new PhoenixTableMetricsWriter(); + PhoenixMetricsSink sink = new PhoenixMetricsSink(); Connection conn = getConnectionWithoutTracing(); sink.initForTesting(conn); // create a simple metrics record long traceid = 12345; - List records = new ArrayList(); - PhoenixMetricsRecord record = + List records = new ArrayList(); + MetricsRecord record = createAndFlush(sink, traceid, Span.ROOT_SPAN_ID, 7777, "root", 10, 30, "hostname.value", "root-span tag"); records.add(record); @@ -128,7 +119,7 @@ record = validateTraces(records, conn, traceid); } - private void validateTraces(List records, Connection conn, long traceid) + private void validateTraces(List records, Connection conn, long traceid) throws Exception { TraceReader reader = new TraceReader(conn); Collection traces = reader.readAll(1); @@ -145,13 +136,13 @@ private void validateTraces(List records, Connection conn, * @param records * @param trace */ - private void validateTrace(List records, TraceHolder trace) { + private void validateTrace(List records, TraceHolder trace) { // drop each span into a sorted list so we get the expected ordering Iterator spanIter = trace.spans.iterator(); - for (PhoenixMetricsRecord record : records) { + for (MetricsRecord record : records) { SpanInfo spanInfo = spanIter.next(); LOG.info("Checking span:\n" + spanInfo); - Iterator metricIter = record.metrics().iterator(); + Iterator metricIter = record.metrics().iterator(); assertEquals("Got an unexpected span id", metricIter.next().value(), spanInfo.id); long parentId = (Long) metricIter.next().value(); if (parentId == Span.ROOT_SPAN_ID) { @@ -162,12 +153,12 @@ private void validateTrace(List records, TraceHolder trace assertEquals("Got an unexpected start time", metricIter.next().value(), spanInfo.start); assertEquals("Got an unexpected end time", metricIter.next().value(), spanInfo.end); - Iterator tags = record.tags().iterator(); + Iterator tags = record.tags().iterator(); int annotationCount = 0; while (tags.hasNext()) { // hostname is a tag, so we differentiate it - PhoenixMetricTag tag = tags.next(); + MetricsTag tag = tags.next(); if (tag.name().equals(MetricInfo.HOSTNAME.traceName)) { assertEquals("Didn't store correct hostname value", tag.value(), spanInfo.hostname); diff --git a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTracingEndToEndIT.java b/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTracingEndToEndIT.java index 87d80dab810..f4cf0d1074d 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTracingEndToEndIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/trace/PhoenixTracingEndToEndIT.java @@ -17,46 +17,37 @@ */ package org.apache.phoenix.trace; -import static org.apache.phoenix.util.PhoenixRuntime.TENANT_ID_ATTRIB; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.Collection; -import java.util.concurrent.CountDownLatch; -import java.util.concurrent.TimeUnit; - +import com.google.common.collect.ImmutableMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.hadoop.metrics2.MetricsSource; import org.apache.phoenix.coprocessor.BaseScannerRegionObserver; import org.apache.phoenix.end2end.HBaseManagedTimeTest; import org.apache.phoenix.metrics.Metrics; -import org.apache.phoenix.metrics.TracingTestCompat; import org.apache.phoenix.query.QueryServicesOptions; -import org.apache.phoenix.trace.Hadoop1TracingTestEnabler.Hadoop1Disabled; import org.apache.phoenix.trace.TraceReader.SpanInfo; import org.apache.phoenix.trace.TraceReader.TraceHolder; -import org.cloudera.htrace.Sampler; -import org.cloudera.htrace.Span; -import org.cloudera.htrace.SpanReceiver; -import org.cloudera.htrace.Trace; -import org.cloudera.htrace.TraceScope; +import org.cloudera.htrace.*; import org.junit.After; import org.junit.BeforeClass; import org.junit.Test; import org.junit.experimental.categories.Category; -import org.junit.runner.RunWith; -import com.google.common.collect.ImmutableMap; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Collection; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +import static org.apache.phoenix.util.PhoenixRuntime.TENANT_ID_ATTRIB; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; /** * Test that the logging sink stores the expected metrics/stats */ -@RunWith(Hadoop1TracingTestEnabler.class) -@Hadoop1Disabled("tracing") @Category(HBaseManagedTimeTest.class) public class PhoenixTracingEndToEndIT extends BaseTracingTestIT { @@ -69,15 +60,12 @@ public class PhoenixTracingEndToEndIT extends BaseTracingTestIT { @BeforeClass public static void setupMetrics() throws Exception { - if (shouldEarlyExitForHadoop1Test()) { - return; - } - PhoenixTableMetricsWriter pWriter = new PhoenixTableMetricsWriter(); + PhoenixMetricsSink pWriter = new PhoenixMetricsSink(); Connection conn = getConnectionWithoutTracing(); pWriter.initForTesting(conn); sink = new DisableableMetricsWriter(pWriter); - TracingTestCompat.registerSink(sink); + TracingTestUtil.registerSink(sink); } @After @@ -112,10 +100,10 @@ private static void replaceWriterConnection(Connection conn) throws SQLException @Test public void testWriteSpans() throws Exception { // get a receiver for the spans - SpanReceiver receiver = TracingCompat.newTraceMetricSource(); + SpanReceiver receiver = new TraceMetricSource(); // which also needs to a source for the metrics system - Metrics.getManager().registerSource("testWriteSpans-source", "source for testWriteSpans", - receiver); + Metrics.initialize().register("testWriteSpans-source", "source for testWriteSpans", + (MetricsSource) receiver); // watch our sink so we know when commits happen CountDownLatch latch = new CountDownLatch(1); @@ -128,7 +116,7 @@ public void testWriteSpans() throws Exception { // add a child with some annotations Span child = span.child("child 1"); child.addTimelineAnnotation("timeline annotation"); - TracingCompat.addAnnotation(child, "test annotation", 10); + TracingUtils.addAnnotation(child, "test annotation", 10); child.stop(); // sleep a little bit to get some time difference @@ -230,10 +218,7 @@ public boolean foundTrace(TraceHolder trace, SpanInfo span) { if (traceInfo.contains(QueryServicesOptions.DEFAULT_TRACING_STATS_TABLE_NAME)) { return false; } - if (traceInfo.contains("Completing index")) { - return true; - } - return false; + return traceInfo.contains("Completing index"); } }); @@ -467,4 +452,4 @@ public void commit() throws SQLException { } } -} +} \ No newline at end of file diff --git a/phoenix-core/src/it/java/org/apache/phoenix/trace/TracingTestUtil.java b/phoenix-core/src/it/java/org/apache/phoenix/trace/TracingTestUtil.java new file mode 100644 index 00000000000..d502175b147 --- /dev/null +++ b/phoenix-core/src/it/java/org/apache/phoenix/trace/TracingTestUtil.java @@ -0,0 +1,14 @@ +package org.apache.phoenix.trace; + +import org.apache.hadoop.metrics2.MetricsSink; +import org.apache.phoenix.metrics.Metrics; + +/** + * + */ +public class TracingTestUtil { + + public static void registerSink(MetricsSink sink){ + Metrics.initialize().register("phoenix", "test sink gets logged", sink); + } +} diff --git a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/Indexer.java b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/Indexer.java index d55dfbfd714..9c48a8d445f 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/Indexer.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/hbase/index/Indexer.java @@ -64,7 +64,7 @@ import org.apache.phoenix.hbase.index.write.recovery.PerRegionIndexWriteCache; import org.apache.phoenix.hbase.index.write.recovery.StoreFailuresInCachePolicy; import org.apache.phoenix.hbase.index.write.recovery.TrackingParallelWriterIndexCommitter; -import org.apache.phoenix.trace.TracingCompat; +import org.apache.phoenix.trace.TracingUtils; import org.apache.phoenix.trace.util.NullSpan; import org.cloudera.htrace.Span; import org.cloudera.htrace.Trace; @@ -276,7 +276,7 @@ public void preBatchMutateWithExceptions(ObserverContext - * Each metric record should only correspond to a single completed span. Each span is only updated - * in the phoenix table once + * Write the metrics to a phoenix table. + * Generally, this class is instantiated via hadoop-metrics2 property files. + * Specifically, you would create this class by adding the following to + * by + * This would actually be set as: + * [prefix].sink.[some instance name].class=org.apache.phoenix.trace.PhoenixMetricsSink + * , where prefix is either: + *
    + *
  1. "phoenix", for the client
  2. + *
  3. "hbase", for the server
  4. + *
+ * and + * some instance name is just any unique name, so properties can be differentiated if + * there are multiple sinks of the same type created */ -public class PhoenixTableMetricsWriter implements MetricsWriter { +public class PhoenixMetricsSink implements MetricsSink { - private static final String VARIABLE_VALUE = "?"; + private static final Log LOG = LogFactory.getLog(PhoenixMetricsSink.class); - public static final Log LOG = LogFactory.getLog(PhoenixTableMetricsWriter.class); + private static final String VARIABLE_VALUE = "?"; private static final Joiner COLUMN_JOIN = Joiner.on("."); static final String TAG_FAMILY = "tags"; - /** Count of the number of tags we are storing for this row */ + /** + * Count of the number of tags we are storing for this row + */ static final String TAG_COUNT = COLUMN_JOIN.join(TAG_FAMILY, "count"); static final String ANNOTATION_FAMILY = "annotations"; static final String ANNOTATION_COUNT = COLUMN_JOIN.join(ANNOTATION_FAMILY, "count"); - /** Join strings on a comma */ + /** + * Join strings on a comma + */ private static final Joiner COMMAS = Joiner.on(','); private Connection conn; private String table; + public PhoenixMetricsSink() { + LOG.info("Writing tracing metrics to phoenix table"); + + } + @Override - public void initialize() { + public void init(SubsetConfiguration config) { + Metrics.markSinkInitialized(); LOG.info("Phoenix tracing writer started"); } @@ -95,15 +110,15 @@ private void lazyInitialize() { // create the phoenix connection Properties props = new Properties(); props.setProperty(QueryServices.TRACING_FREQ_ATTRIB, - Tracing.Frequency.NEVER.getKey()); - Configuration conf = HBaseConfiguration.create(); + Tracing.Frequency.NEVER.getKey()); + org.apache.hadoop.conf.Configuration conf = HBaseConfiguration.create(); Connection conn = QueryUtil.getConnection(props, conf); // enable bulk loading when we have enough data conn.setAutoCommit(true); String tableName = conf.get(QueryServices.TRACING_STATS_TABLE_NAME_ATTRIB, - QueryServicesOptions.DEFAULT_TRACING_STATS_TABLE_NAME); + QueryServicesOptions.DEFAULT_TRACING_STATS_TABLE_NAME); initializeInternal(conn, tableName); } catch (Exception e) { @@ -121,9 +136,9 @@ private void initializeInternal(Connection conn, String tableName) throws SQLExc /** * Used for TESTING ONLY - *

* Initialize the connection and setup the table to use the - * {@link TracingCompat#DEFAULT_TRACING_STATS_TABLE_NAME} + * {@link org.apache.phoenix.query.QueryServicesOptions#DEFAULT_TRACING_STATS_TABLE_NAME} + * * @param conn to store for upserts and to create the table (if necessary) * @throws SQLException if any phoenix operation fails */ @@ -135,14 +150,15 @@ public void initForTesting(Connection conn) throws SQLException { /** * Create a stats table with the given name. Stores the name for use later when creating upsert * statements - * @param conn connection to use when creating the table + * + * @param conn connection to use when creating the table * @param table name of the table to create * @throws SQLException if any phoenix operations fails */ private void createTable(Connection conn, String table) throws SQLException { // only primary-key columns can be marked non-null String ddl = - "create table if not exists " + table + "( " + + "create table if not exists " + table + "( " + TRACE.columnName + " bigint not null, " + PARENT.columnName + " bigint not null, " + SPAN.columnName + " bigint not null, " + @@ -153,7 +169,7 @@ private void createTable(Connection conn, String table) throws SQLException { TAG_COUNT + " smallint, " + ANNOTATION_COUNT + " smallint" + " CONSTRAINT pk PRIMARY KEY (" + TRACE.columnName + ", " - + PARENT.columnName + ", " + SPAN.columnName + "))\n"; + + PARENT.columnName + ", " + SPAN.columnName + "))\n"; PreparedStatement stmt = conn.prepareStatement(ddl); stmt.execute(); this.table = table; @@ -171,13 +187,14 @@ public void flush() { /** * Add a new metric record to be written. + * * @param record */ @Override - public void addMetrics(PhoenixMetricsRecord record) { + public void putMetrics(MetricsRecord record) { // its not a tracing record, we are done. This could also be handled by filters, but safer // to do it here, in case it gets misconfigured - if (!record.name().startsWith(TracingCompat.METRIC_SOURCE_KEY)) { + if (!record.name().startsWith(TracingUtils.METRIC_SOURCE_KEY)) { return; } @@ -192,26 +209,27 @@ public void addMetrics(PhoenixMetricsRecord record) { // causes the parser to barf. Instead, we need to add them after the statement is prepared List variableValues = new ArrayList(record.tags().size()); keys.add(TRACE.columnName); - values.add(Long.parseLong(record.name().substring(TracingCompat.METRIC_SOURCE_KEY.length()))); + values.add( + Long.parseLong(record.name().substring(TracingUtils.METRIC_SOURCE_KEY.length()))); keys.add(DESCRIPTION.columnName); values.add(VARIABLE_VALUE); variableValues.add(record.description()); // add each of the metrics - for (PhoenixAbstractMetric metric : record.metrics()) { + for (AbstractMetric metric : record.metrics()) { // name of the metric is also the column name to which we write - keys.add(MetricInfo.getColumnName(metric.getName())); + keys.add(MetricInfo.getColumnName(metric.name())); values.add(metric.value()); } // get the tags out so we can set them later (otherwise, need to be a single value) int annotationCount = 0; int tagCount = 0; - for (PhoenixMetricTag tag : record.tags()) { + for (MetricsTag tag : record.tags()) { if (tag.name().equals(ANNOTATION.traceName)) { addDynamicEntry(keys, values, variableValues, ANNOTATION_FAMILY, tag, ANNOTATION, - annotationCount); + annotationCount); annotationCount++; } else if (tag.name().equals(TAG.traceName)) { addDynamicEntry(keys, values, variableValues, TAG_FAMILY, tag, TAG, tagCount); @@ -252,7 +270,8 @@ public void addMetrics(PhoenixMetricsRecord record) { } ps.execute(); } catch (SQLException e) { - LOG.error("Could not write metric: \n" + record + " to prepared statement:\n" + stmt, e); + LOG.error("Could not write metric: \n" + record + " to prepared statement:\n" + stmt, + e); } } @@ -261,7 +280,7 @@ public static String getDynamicColumnName(String family, String column, int coun } private void addDynamicEntry(List keys, List values, - List variableValues, String family, PhoenixMetricTag tag, + List variableValues, String family, MetricsTag tag, MetricInfo metric, int count) { // <.dynColumn> keys.add(getDynamicColumnName(family, metric.columnName, count) + " VARCHAR"); @@ -272,6 +291,7 @@ private void addDynamicEntry(List keys, List values, variableValues.add(val); } + @VisibleForTesting public void clearForTesting() throws SQLException { this.conn.rollback(); } diff --git a/phoenix-hadoop2-compat/src/main/java/org/apache/phoenix/trace/TraceMetricSource.java b/phoenix-core/src/main/java/org/apache/phoenix/trace/TraceMetricSource.java similarity index 86% rename from phoenix-hadoop2-compat/src/main/java/org/apache/phoenix/trace/TraceMetricSource.java rename to phoenix-core/src/main/java/org/apache/phoenix/trace/TraceMetricSource.java index 1114a9551e5..1b9e31aaee9 100644 --- a/phoenix-hadoop2-compat/src/main/java/org/apache/phoenix/trace/TraceMetricSource.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/trace/TraceMetricSource.java @@ -17,35 +17,25 @@ */ package org.apache.phoenix.trace; -import static org.apache.phoenix.metrics.MetricInfo.ANNOTATION; -import static org.apache.phoenix.metrics.MetricInfo.END; -import static org.apache.phoenix.metrics.MetricInfo.PARENT; -import static org.apache.phoenix.metrics.MetricInfo.SPAN; -import static org.apache.phoenix.metrics.MetricInfo.START; -import static org.apache.phoenix.metrics.MetricInfo.TAG; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - import org.apache.hadoop.hbase.util.Pair; -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.MetricsTag; +import org.apache.hadoop.metrics2.*; import org.apache.hadoop.metrics2.lib.Interns; import org.apache.phoenix.metrics.MetricInfo; import org.apache.phoenix.metrics.Metrics; -import org.apache.phoenix.metrics.MetricsManager; import org.cloudera.htrace.HTraceConfiguration; import org.cloudera.htrace.Span; import org.cloudera.htrace.SpanReceiver; import org.cloudera.htrace.TimelineAnnotation; import org.cloudera.htrace.impl.MilliSpan; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import static org.apache.phoenix.metrics.MetricInfo.*; + /** * Sink for request traces ({@link SpanReceiver}) that pushes writes to {@link MetricsSource} in a * format that we can more easily consume. @@ -83,7 +73,7 @@ * This is a somewhat rough implementation - we do excessive locking for correctness, * rather than trying to make it fast, for the moment. */ -public class TraceMetricSource implements PhoenixSpanReceiver, MetricsSource { +public class TraceMetricSource implements SpanReceiver, MetricsSource { private static final String EMPTY_STRING = ""; @@ -92,12 +82,13 @@ public class TraceMetricSource implements PhoenixSpanReceiver, MetricsSource { private List spans = new ArrayList(); public TraceMetricSource() { - MetricsManager manager = Metrics.initialize(); + + MetricsSystem manager = Metrics.initialize(); // Register this instance. // For right now, we ignore the MBean registration issues that show up in DEBUG logs. Basically, // we need a Jmx MBean compliant name. We'll get to a better name when we want that later - manager.registerSource(CONTEXT, "Phoenix call tracing", this); + manager.register(CONTEXT, "Phoenix call tracing", this); } @Override @@ -119,7 +110,7 @@ public void receiveSpan(Span span) { Map annotations = span.getKVAnnotations(); for (Entry annotation : annotations.entrySet()) { Pair val = - TracingCompat.readAnnotation(annotation.getKey(), annotation.getValue()); + TracingUtils.readAnnotation(annotation.getKey(), annotation.getValue()); builder.add(new MetricsTag(Interns.info(ANNOTATION.traceName, val.getFirst()), val .getSecond())); } @@ -135,16 +126,16 @@ public void getMetrics(MetricsCollector collector, boolean all) { // add a marker record so we know how many spans are used // this is also necessary to ensure that we register the metrics source as an MBean (avoiding a // runtime warning) - MetricsRecordBuilder marker = collector.addRecord(TracingCompat.METRICS_MARKER_CONTEXT); + MetricsRecordBuilder marker = collector.addRecord(TracingUtils.METRICS_MARKER_CONTEXT); marker.add(new MetricsTag(new MetricsInfoImpl("stat", "num spans"), Integer .toString(spans.size()))); // actually convert the known spans into metric records as well synchronized (this) { for (Metric span : spans) { - MetricsRecordBuilder builder = collector.addRecord(new MetricsInfoImpl(TracingCompat + MetricsRecordBuilder builder = collector.addRecord(new MetricsInfoImpl(TracingUtils .getTraceMetricName(span.id), span.desc)); - builder.setContext(TracingCompat.METRICS_CONTEXT); + builder.setContext(TracingUtils.METRICS_CONTEXT); for (Pair metric : span.counters) { builder.addCounter(metric.getFirst(), metric.getSecond()); } diff --git a/phoenix-core/src/main/java/org/apache/phoenix/trace/TraceReader.java b/phoenix-core/src/main/java/org/apache/phoenix/trace/TraceReader.java index 3d6eb9b59c6..f3fc81d37ce 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/trace/TraceReader.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/trace/TraceReader.java @@ -40,7 +40,7 @@ import com.google.common.primitives.Longs; /** - * Read the traces written to phoenix tables by the {@link PhoenixTableMetricsWriter}. + * Read the traces written to phoenix tables by the {@link PhoenixMetricsSink}. */ public class TraceReader { @@ -54,8 +54,8 @@ public class TraceReader { comma.join(MetricInfo.TRACE.columnName, MetricInfo.PARENT.columnName, MetricInfo.SPAN.columnName, MetricInfo.DESCRIPTION.columnName, MetricInfo.START.columnName, MetricInfo.END.columnName, - MetricInfo.HOSTNAME.columnName, PhoenixTableMetricsWriter.TAG_COUNT, - PhoenixTableMetricsWriter.ANNOTATION_COUNT); + MetricInfo.HOSTNAME.columnName, PhoenixMetricsSink.TAG_COUNT, + PhoenixMetricsSink.ANNOTATION_COUNT); } private Connection conn; @@ -181,13 +181,13 @@ public Collection readAll(int limit) throws SQLException { private Collection getTags(long traceid, long parent, long span, int count) throws SQLException { return getDynamicCountColumns(traceid, parent, span, count, - PhoenixTableMetricsWriter.TAG_FAMILY, MetricInfo.TAG.columnName); + PhoenixMetricsSink.TAG_FAMILY, MetricInfo.TAG.columnName); } private Collection getAnnotations(long traceid, long parent, long span, int count) throws SQLException { return getDynamicCountColumns(traceid, parent, span, count, - PhoenixTableMetricsWriter.ANNOTATION_FAMILY, MetricInfo.ANNOTATION.columnName); + PhoenixMetricsSink.ANNOTATION_FAMILY, MetricInfo.ANNOTATION.columnName); } private Collection getDynamicCountColumns(long traceid, long parent, @@ -199,7 +199,7 @@ private Collection getDynamicCountColumns(long traceid, long p // build the column strings, family.column String[] parts = new String[count]; for (int i = 0; i < count; i++) { - parts[i] = PhoenixTableMetricsWriter.getDynamicColumnName(family, columnName, i); + parts[i] = PhoenixMetricsSink.getDynamicColumnName(family, columnName, i); } // join the columns together String columns = comma.join(parts); diff --git a/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/trace/TracingCompat.java b/phoenix-core/src/main/java/org/apache/phoenix/trace/TracingUtils.java similarity index 64% rename from phoenix-hadoop-compat/src/main/java/org/apache/phoenix/trace/TracingCompat.java rename to phoenix-core/src/main/java/org/apache/phoenix/trace/TracingUtils.java index e0a34106a1e..6ae52d8a7e0 100644 --- a/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/trace/TracingCompat.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/trace/TracingUtils.java @@ -19,26 +19,16 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.hadoop.hbase.CompatibilityFactory; import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.util.Pair; -import org.apache.phoenix.metrics.MetricsWriter; import org.cloudera.htrace.Span; -import org.cloudera.htrace.SpanReceiver; /** - * Utilities for tracing that are common among the compatibility and core classes. + * Utilities for tracing */ -public class TracingCompat { +public class TracingUtils { - private static final Log LOG = LogFactory.getLog(TracingCompat.class); - - /** - * @return a new SpanReceiver that will write to the correct metrics system - */ - public static SpanReceiver newTraceMetricSource() { - return CompatibilityFactory.getInstance(PhoenixSpanReceiver.class); - } + private static final Log LOG = LogFactory.getLog(TracingUtils.class); public static final String METRIC_SOURCE_KEY = "phoenix."; @@ -56,22 +46,6 @@ public static Pair readAnnotation(byte[] key, byte[] value) { return new Pair(new String(key), Bytes.toString(value)); } - public static MetricsWriter initializeWriter(String clazz) { - try { - MetricsWriter writer = - Class.forName(clazz).asSubclass(MetricsWriter.class).newInstance(); - writer.initialize(); - return writer; - } catch (InstantiationException e) { - LOG.error("Failed to create metrics writer: " + clazz, e); - } catch (IllegalAccessException e) { - LOG.error("Failed to create metrics writer: " + clazz, e); - } catch (ClassNotFoundException e) { - LOG.error("Failed to create metrics writer: " + clazz, e); - } - return null; - } - /** * @see #getTraceMetricName(String) */ diff --git a/phoenix-core/src/main/java/org/apache/phoenix/trace/util/Tracing.java b/phoenix-core/src/main/java/org/apache/phoenix/trace/util/Tracing.java index d0677cff3e4..b093b9c3288 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/trace/util/Tracing.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/trace/util/Tracing.java @@ -36,8 +36,7 @@ import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.query.QueryServices; import org.apache.phoenix.query.QueryServicesOptions; -import org.apache.phoenix.trace.TracingCompat; -import org.apache.phoenix.util.StringUtil; +import org.apache.phoenix.trace.TraceMetricSource; import org.cloudera.htrace.Sampler; import org.cloudera.htrace.Span; import org.cloudera.htrace.Trace; @@ -313,7 +312,7 @@ public void after() { public synchronized static void addTraceMetricsSource() { try { if (!initialized) { - Trace.addReceiver(TracingCompat.newTraceMetricSource()); + Trace.addReceiver(new TraceMetricSource()); } } catch (RuntimeException e) { LOG.warn("Tracing will outputs will not be written to any metrics sink! No " diff --git a/phoenix-hadoop2-compat/src/test/java/org/apache/hadoop/metrics2/impl/ExposedMetricCounterLong.java b/phoenix-core/src/test/java/org/apache/hadoop/metrics2/impl/ExposedMetricCounterLong.java similarity index 95% rename from phoenix-hadoop2-compat/src/test/java/org/apache/hadoop/metrics2/impl/ExposedMetricCounterLong.java rename to phoenix-core/src/test/java/org/apache/hadoop/metrics2/impl/ExposedMetricCounterLong.java index 33ca73850f9..f4dfd74a016 100644 --- a/phoenix-hadoop2-compat/src/test/java/org/apache/hadoop/metrics2/impl/ExposedMetricCounterLong.java +++ b/phoenix-core/src/test/java/org/apache/hadoop/metrics2/impl/ExposedMetricCounterLong.java @@ -18,13 +18,14 @@ package org.apache.hadoop.metrics2.impl; import org.apache.hadoop.metrics2.MetricsInfo; -import org.apache.hadoop.metrics2.impl.MetricCounterLong; /** * */ public class ExposedMetricCounterLong extends MetricCounterLong { + + /** * @param info * @param value diff --git a/phoenix-hadoop2-compat/src/test/java/org/apache/hadoop/metrics2/impl/ExposedMetricsRecordImpl.java b/phoenix-core/src/test/java/org/apache/hadoop/metrics2/impl/ExposedMetricsRecordImpl.java similarity index 96% rename from phoenix-hadoop2-compat/src/test/java/org/apache/hadoop/metrics2/impl/ExposedMetricsRecordImpl.java rename to phoenix-core/src/test/java/org/apache/hadoop/metrics2/impl/ExposedMetricsRecordImpl.java index bcb8b43af20..c5f54e60784 100644 --- a/phoenix-hadoop2-compat/src/test/java/org/apache/hadoop/metrics2/impl/ExposedMetricsRecordImpl.java +++ b/phoenix-core/src/test/java/org/apache/hadoop/metrics2/impl/ExposedMetricsRecordImpl.java @@ -22,7 +22,6 @@ import org.apache.hadoop.metrics2.AbstractMetric; import org.apache.hadoop.metrics2.MetricsInfo; import org.apache.hadoop.metrics2.MetricsTag; -import org.apache.hadoop.metrics2.impl.MetricsRecordImpl; /** * Helper class to access the package-private {@link MetricsRecordImpl} diff --git a/phoenix-hadoop2-compat/src/test/java/org/apache/hadoop/metrics2/lib/ExposedMetricsInfoImpl.java b/phoenix-core/src/test/java/org/apache/hadoop/metrics2/lib/ExposedMetricsInfoImpl.java similarity index 87% rename from phoenix-hadoop2-compat/src/test/java/org/apache/hadoop/metrics2/lib/ExposedMetricsInfoImpl.java rename to phoenix-core/src/test/java/org/apache/hadoop/metrics2/lib/ExposedMetricsInfoImpl.java index 6daf60413e4..1ad1553662f 100644 --- a/phoenix-hadoop2-compat/src/test/java/org/apache/hadoop/metrics2/lib/ExposedMetricsInfoImpl.java +++ b/phoenix-core/src/test/java/org/apache/hadoop/metrics2/lib/ExposedMetricsInfoImpl.java @@ -17,8 +17,10 @@ */ package org.apache.hadoop.metrics2.lib; +import org.apache.hadoop.metrics2.lib.MetricsInfoImpl; + /** - * Helper class to expose access to the {@link MetricsInfoImpl} + * Helper class to expose access to the {@link org.apache.hadoop.metrics2.lib.MetricsInfoImpl} */ public class ExposedMetricsInfoImpl extends MetricsInfoImpl { diff --git a/phoenix-hadoop-compat/src/test/java/org/apache/phoenix/metrics/LoggingSink.java b/phoenix-core/src/test/java/org/apache/phoenix/metrics/LoggingSink.java similarity index 72% rename from phoenix-hadoop-compat/src/test/java/org/apache/phoenix/metrics/LoggingSink.java rename to phoenix-core/src/test/java/org/apache/phoenix/metrics/LoggingSink.java index 97682b39c2d..2cea6841041 100644 --- a/phoenix-hadoop-compat/src/test/java/org/apache/phoenix/metrics/LoggingSink.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/metrics/LoggingSink.java @@ -17,24 +17,28 @@ */ package org.apache.phoenix.metrics; +import org.apache.commons.configuration.SubsetConfiguration; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.phoenix.trace.TracingCompat; +import org.apache.hadoop.metrics2.AbstractMetric; +import org.apache.hadoop.metrics2.MetricsRecord; +import org.apache.hadoop.metrics2.MetricsSink; +import org.apache.phoenix.trace.TracingUtils; /** * Simple sink that just logs the output of all the metrics that start with - * {@link TracingCompat#METRIC_SOURCE_KEY} + * {@link org.apache.phoenix.trace.TracingUtils#METRIC_SOURCE_KEY} */ -public class LoggingSink implements MetricsWriter { +public class LoggingSink implements MetricsSink { private static final Log LOG = LogFactory.getLog(LoggingSink.class); @Override - public void initialize() { + public void init(SubsetConfiguration config) { } @Override - public void addMetrics(PhoenixMetricsRecord record) { + public void putMetrics(MetricsRecord record) { // we could wait until flush, but this is a really lightweight process, so we just write // them // as soon as we get them @@ -42,9 +46,9 @@ public void addMetrics(PhoenixMetricsRecord record) { return; } LOG.debug("Found record:" + record.name()); - for (PhoenixAbstractMetric metric : record.metrics()) { + for (AbstractMetric metric : record.metrics()) { // just print the metric we care about - if (metric.getName().startsWith(TracingCompat.METRIC_SOURCE_KEY)) { + if (metric.name().startsWith(TracingUtils.METRIC_SOURCE_KEY)) { LOG.debug("\t metric:" + metric); } } diff --git a/phoenix-hadoop2-compat/src/test/java/org/apache/phoenix/trace/TraceMetricsSourceTest.java b/phoenix-core/src/test/java/org/apache/phoenix/trace/TraceMetricsSourceTest.java similarity index 98% rename from phoenix-hadoop2-compat/src/test/java/org/apache/phoenix/trace/TraceMetricsSourceTest.java rename to phoenix-core/src/test/java/org/apache/phoenix/trace/TraceMetricsSourceTest.java index 3258e8ab070..5cb34b834f9 100644 --- a/phoenix-hadoop2-compat/src/test/java/org/apache/phoenix/trace/TraceMetricsSourceTest.java +++ b/phoenix-core/src/test/java/org/apache/phoenix/trace/TraceMetricsSourceTest.java @@ -66,7 +66,7 @@ public void testIntegerAnnotations(){ Span span = getSpan(); // add annotation through the phoenix interfaces - TracingCompat.addAnnotation(span, "message", 10); + TracingUtils.addAnnotation(span, "message", 10); TraceMetricSource source = new TraceMetricSource(); source.receiveSpan(span); diff --git a/phoenix-hadoop-compat/pom.xml b/phoenix-hadoop-compat/pom.xml deleted file mode 100644 index c2f810ae81c..00000000000 --- a/phoenix-hadoop-compat/pom.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - - - 4.0.0 - - org.apache.phoenix - phoenix - 5.0.0-SNAPSHOT - - phoenix-hadoop-compat - Phoenix Hadoop Compatibility - Compatibility layer for Hadoop versions - - - - - - org.apache.maven.plugins - maven-jar-plugin - 2.4 - - - prepare-package - - - test-jar - - - - - - - maven-assembly-plugin - - true - - - - - - - - org.cloudera.htrace - htrace-core - - - org.apache.hbase - hbase-hadoop-compat - - - com.google.guava - guava - - - log4j - log4j - - - org.slf4j - slf4j-api - - - org.apache.hbase - hbase-common - - - \ No newline at end of file diff --git a/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/MetricsManager.java b/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/MetricsManager.java deleted file mode 100644 index 13c94356206..00000000000 --- a/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/MetricsManager.java +++ /dev/null @@ -1,58 +0,0 @@ -/** - * 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.metrics; - -/** - * Metrics management system. Backed by the underlying hadoop metrics, depending on the project on - * the classpath. - *

- * The underlying types passed to method must match the expected metrics type - this will vary for - * the underlying metrics systems (hadoop1 vs hadoop2), but can't be specified at this layer because - * we must be compatible with both systems. - */ -public interface MetricsManager { - - /** - * @param metricsSystemName the metrics prefix to initialize, if it hasn't already been - * initialized. Not assumed to be thread-safe, unless otherwise noted in the - * implementation. - */ - public abstract void initialize(String metricsSystemName); - - /** - * Register a metrics sink - * @param the type of the sink - * @param sink to register - * @param name of the sink. Must be unique. - * @param desc the description of the sink - * @return the sink - */ - public abstract T register(String name, String desc, T sink); - - /** - * Register a metrics source. - * @param name name of the source - must be unique - * @param description description of the source - * @param source to register. - * @param the type of the source - * @return the source - */ - public abstract T registerSource(String name, String description, T source); - - public void shutdown(); -} \ No newline at end of file diff --git a/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/MetricsWriter.java b/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/MetricsWriter.java deleted file mode 100644 index 0e8b9fe3a71..00000000000 --- a/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/MetricsWriter.java +++ /dev/null @@ -1,31 +0,0 @@ -/** - * 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.metrics; - - -/** - * Generic writer for a phoenix metric - */ -public interface MetricsWriter { - - public void initialize(); - - public void flush(); - - public void addMetrics(PhoenixMetricsRecord record); -} \ No newline at end of file diff --git a/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/PhoenixAbstractMetric.java b/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/PhoenixAbstractMetric.java deleted file mode 100644 index 27ae6b814f7..00000000000 --- a/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/PhoenixAbstractMetric.java +++ /dev/null @@ -1,30 +0,0 @@ -/** - * 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.metrics; - - -public interface PhoenixAbstractMetric { - - public String getName(); - - /** - * Get the value of the metric - * @return the value of the metric - */ - public Number value(); -} diff --git a/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/PhoenixMetricTag.java b/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/PhoenixMetricTag.java deleted file mode 100644 index 123cc1c7b1d..00000000000 --- a/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/PhoenixMetricTag.java +++ /dev/null @@ -1,27 +0,0 @@ -/** - * 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.metrics; - -public interface PhoenixMetricTag { - - public String name(); - - public String description(); - - public String value(); -} \ No newline at end of file diff --git a/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/PhoenixMetricsRecord.java b/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/PhoenixMetricsRecord.java deleted file mode 100644 index 68f7c462c55..00000000000 --- a/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/metrics/PhoenixMetricsRecord.java +++ /dev/null @@ -1,35 +0,0 @@ -/** - * 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.metrics; - -import java.util.Collection; - - -/** - * - */ -public interface PhoenixMetricsRecord { - - public String name(); - - public String description(); - - public Iterable metrics(); - - public Collection tags(); -} \ No newline at end of file diff --git a/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/trace/PhoenixSpanReceiver.java b/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/trace/PhoenixSpanReceiver.java deleted file mode 100644 index 7e4e09ca141..00000000000 --- a/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/trace/PhoenixSpanReceiver.java +++ /dev/null @@ -1,26 +0,0 @@ -/** - * 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.trace; - -import org.cloudera.htrace.SpanReceiver; - -/** - * Marker interface for phoenix specific receivers. - */ -public interface PhoenixSpanReceiver extends SpanReceiver { -} \ No newline at end of file diff --git a/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/trace/TestableMetricsWriter.java b/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/trace/TestableMetricsWriter.java deleted file mode 100644 index b6bc75dd02c..00000000000 --- a/phoenix-hadoop-compat/src/main/java/org/apache/phoenix/trace/TestableMetricsWriter.java +++ /dev/null @@ -1,30 +0,0 @@ -/** - * 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.trace; - -import org.apache.phoenix.metrics.MetricsWriter; - -/** - * Marker interface for a MetricsWriter that can be registered to the current metrics system. The - * writer should convert from the metrics information it receives from the metrics system to Phoenix - * records that the MetricsWriter can read (and subsequently write). - */ -public interface TestableMetricsWriter { - - public void setWriterForTesting(MetricsWriter writer); -} \ No newline at end of file diff --git a/phoenix-hadoop-compat/src/test/java/org/apache/phoenix/metrics/TracingTestCompat.java b/phoenix-hadoop-compat/src/test/java/org/apache/phoenix/metrics/TracingTestCompat.java deleted file mode 100644 index 8dd8a41a04c..00000000000 --- a/phoenix-hadoop-compat/src/test/java/org/apache/phoenix/metrics/TracingTestCompat.java +++ /dev/null @@ -1,45 +0,0 @@ -/** - * 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.metrics; - -import org.apache.hadoop.hbase.CompatibilityFactory; -import org.apache.phoenix.trace.TestableMetricsWriter; - -/** - * Utility class for testing tracing - */ -public class TracingTestCompat { - - private TracingTestCompat() { - assert false; - } - - public static TestableMetricsWriter newTraceMetricSink() { - return CompatibilityFactory.getInstance(TestableMetricsWriter.class); - } - - /** - * Register the sink with the metrics system, so we don't need to specify it in the conf - * @param sink - */ - public static void registerSink(MetricsWriter sink) { - TestableMetricsWriter writer = newTraceMetricSink(); - writer.setWriterForTesting(sink); - Metrics.getManager().register("phoenix", "test sink gets logged", writer); - } -} \ No newline at end of file diff --git a/phoenix-hadoop2-compat/pom.xml b/phoenix-hadoop2-compat/pom.xml deleted file mode 100644 index 7944a51aa74..00000000000 --- a/phoenix-hadoop2-compat/pom.xml +++ /dev/null @@ -1,77 +0,0 @@ - - - - - 4.0.0 - - org.apache.phoenix - phoenix - 5.0.0-SNAPSHOT - - phoenix-hadoop2-compat - Phoenix Hadoop2 Compatibility - - - - - org.apache.phoenix - phoenix-hadoop-compat - - - - org.apache.hbase - hbase-common - - - hadoop-core - org.apache.hadoop - - - - - - org.apache.hadoop - hadoop-mapreduce-client-core - ${hadoop-two.version} - - - org.apache.hadoop - hadoop-annotations - ${hadoop-two.version} - - - org.apache.hadoop - hadoop-common - ${hadoop-two.version} - - - - com.google.guava - guava - - - - org.mockito - mockito-all - - - \ No newline at end of file diff --git a/phoenix-hadoop2-compat/src/main/java/org/apache/phoenix/metrics/MetricsManagerImpl.java b/phoenix-hadoop2-compat/src/main/java/org/apache/phoenix/metrics/MetricsManagerImpl.java deleted file mode 100644 index 03e06a5bd0c..00000000000 --- a/phoenix-hadoop2-compat/src/main/java/org/apache/phoenix/metrics/MetricsManagerImpl.java +++ /dev/null @@ -1,71 +0,0 @@ -/** - * 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.metrics; - -import java.util.Arrays; - -import org.apache.hadoop.metrics2.MetricsSink; -import org.apache.hadoop.metrics2.MetricsSource; -import org.apache.hadoop.metrics2.MetricsSystem; -import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem; - -import com.google.common.base.Preconditions; - -/** - * - */ -public class MetricsManagerImpl implements MetricsManager { - - private MetricsSystem system; - - @Override - /** - * Register a metrics sink - * @param the type of the sink. - * @param sink to register - * @param name of the sink. Must be unique. - * @param desc the description of the sink - * @return the sink - * @throws IllegalArgumentException if sink is not a MetricsSink - */ - public T register(String name, String desc, T sink) { - isA(sink, MetricsSink.class); - return (T) system.register(name, desc, (MetricsSink) sink); - } - - public T registerSource(String name, String desc, T source) { - isA(source, MetricsSource.class); - return (T) system.register(name, desc, (MetricsSource) source); - } - - @Override - public void initialize(String prefix) { - this.system = DefaultMetricsSystem.initialize(prefix); - } - - private void isA(T object, Class... classes) { - boolean match = false; - for (Class clazz : classes) { - if (clazz.isAssignableFrom(object.getClass())) { - match = true; - break; - } - } - Preconditions.checkArgument(match, object + " is not one of " + Arrays.toString(classes)); - } - - @Override - public void shutdown() { - if (this.system != null) { - this.system.shutdown(); - } - } -} diff --git a/phoenix-hadoop2-compat/src/main/java/org/apache/phoenix/trace/PhoenixMetricsSink.java b/phoenix-hadoop2-compat/src/main/java/org/apache/phoenix/trace/PhoenixMetricsSink.java deleted file mode 100644 index 3de7da37f7b..00000000000 --- a/phoenix-hadoop2-compat/src/main/java/org/apache/phoenix/trace/PhoenixMetricsSink.java +++ /dev/null @@ -1,191 +0,0 @@ -/** - * 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.trace; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; - -import javax.annotation.Nullable; - -import org.apache.commons.configuration.Configuration; -import org.apache.commons.configuration.SubsetConfiguration; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.hadoop.metrics2.AbstractMetric; -import org.apache.hadoop.metrics2.MetricsRecord; -import org.apache.hadoop.metrics2.MetricsSink; -import org.apache.hadoop.metrics2.MetricsTag; -import org.apache.phoenix.metrics.Metrics; -import org.apache.phoenix.metrics.MetricsWriter; -import org.apache.phoenix.metrics.PhoenixAbstractMetric; -import org.apache.phoenix.metrics.PhoenixMetricTag; -import org.apache.phoenix.metrics.PhoenixMetricsRecord; - -import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Function; -import com.google.common.base.Preconditions; -import com.google.common.collect.Iterators; - -/** - * Translate metrics from a Hadoop2 metrics2 metric to a generic PhoenixMetric that a - * {@link MetricsWriter} can then write out. - *

- * This class becomes unnecessary once we drop Hadoop1 support. - */ -public class PhoenixMetricsSink implements MetricsSink, TestableMetricsWriter { - - private static final Log LOG = LogFactory.getLog(PhoenixMetricsSink.class); - /** - * Metrics configuration key for the class that should be used for writing the output. - *

- * This would actually be set as: - * phoenix.sink.<some instance name>.writer-class - * Where some instance name is just any unique name, so properties can be - * differentiated - */ - public static final String PHOENIX_METRICS_WRITER_CLASS = "writer-class"; - - public static void setWriterClass(MetricsWriter writer, Configuration conf) { - conf.setProperty(PHOENIX_METRICS_WRITER_CLASS, writer.getClass().getName()); - } - - private MetricsWriter writer; - - public PhoenixMetricsSink() { - LOG.info("Writing tracing metrics to phoenix table"); - Metrics.markSinkInitialized(); - } - - @Override - public void init(SubsetConfiguration config) { - // instantiate the configured writer class - String clazz = config.getString(PHOENIX_METRICS_WRITER_CLASS); - LOG.info("Instantiating writer class: " + clazz); - this.writer = TracingCompat.initializeWriter(clazz); - Preconditions.checkNotNull(writer, "Could not correctly initialize metrics writer!"); - } - - @Override - @VisibleForTesting - public void setWriterForTesting(MetricsWriter writer) { - this.writer = writer; - } - - @Override - public void putMetrics(MetricsRecord record) { - writer.addMetrics(wrap(record)); - } - - @Override - public void flush() { - writer.flush(); - } - - /** - * Convert the passed record to a {@link PhoenixMetricsRecord} - * @param record to convert - * @return a generic {@link PhoenixMetricsRecord} that delegates to the record in all things - */ - private PhoenixMetricsRecord wrap(final MetricsRecord record) { - return new PhoenixMetricsRecord() { - - @Override - public String name() { - return record.name(); - } - - @Override - public String description() { - return record.description(); - } - - @Override - public Iterable metrics() { - final Iterable iterable = record.metrics(); - return new Iterable(){ - - @Override - public Iterator iterator() { - final Iterator iter = iterable.iterator(); - return Iterators.transform(iter, new Function() { - - @Override - @Nullable - public PhoenixAbstractMetric apply(@Nullable final AbstractMetric input) { - if (input == null) { - return null; - } - return new PhoenixAbstractMetric() { - - @Override - public Number value() { - return input.value(); - } - - @Override - public String getName() { - return input.name(); - } - - @Override - public String toString() { - return input.toString(); - } - }; - } - }); - } - }; - } - - @Override - public Collection tags() { - Collection tags = new ArrayList(); - Collection origTags = record.tags(); - for (final MetricsTag tag : origTags) { - tags.add(new PhoenixMetricTag() { - - @Override - public String name() { - return tag.name(); - } - - @Override - public String description() { - return tag.description(); - } - - @Override - public String value() { - return tag.value(); - } - - @Override - public String toString() { - return tag.toString(); - } - - }); - } - return tags; - } - - }; - } -} \ No newline at end of file diff --git a/phoenix-hadoop2-compat/src/main/resources/META-INF/services/org.apache.phoenix.metrics.MetricsManager b/phoenix-hadoop2-compat/src/main/resources/META-INF/services/org.apache.phoenix.metrics.MetricsManager deleted file mode 100644 index 8430a481837..00000000000 --- a/phoenix-hadoop2-compat/src/main/resources/META-INF/services/org.apache.phoenix.metrics.MetricsManager +++ /dev/null @@ -1 +0,0 @@ -org.apache.phoenix.metrics.MetricsManagerImpl \ No newline at end of file diff --git a/phoenix-hadoop2-compat/src/main/resources/META-INF/services/org.apache.phoenix.trace.PhoenixSpanReceiver b/phoenix-hadoop2-compat/src/main/resources/META-INF/services/org.apache.phoenix.trace.PhoenixSpanReceiver deleted file mode 100644 index 36940930169..00000000000 --- a/phoenix-hadoop2-compat/src/main/resources/META-INF/services/org.apache.phoenix.trace.PhoenixSpanReceiver +++ /dev/null @@ -1 +0,0 @@ -org.apache.phoenix.trace.TraceMetricSource \ No newline at end of file diff --git a/phoenix-hadoop2-compat/src/main/resources/META-INF/services/org.apache.phoenix.trace.TestableMetricsWriter b/phoenix-hadoop2-compat/src/main/resources/META-INF/services/org.apache.phoenix.trace.TestableMetricsWriter deleted file mode 100644 index 7c9e1078d0e..00000000000 --- a/phoenix-hadoop2-compat/src/main/resources/META-INF/services/org.apache.phoenix.trace.TestableMetricsWriter +++ /dev/null @@ -1 +0,0 @@ -org.apache.phoenix.trace.PhoenixMetricsSink \ No newline at end of file diff --git a/phoenix-hadoop2-compat/src/test/java/org/apache/phoenix/trace/PhoenixMetricsWriterTest.java b/phoenix-hadoop2-compat/src/test/java/org/apache/phoenix/trace/PhoenixMetricsWriterTest.java deleted file mode 100644 index f865723c922..00000000000 --- a/phoenix-hadoop2-compat/src/test/java/org/apache/phoenix/trace/PhoenixMetricsWriterTest.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * 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.trace; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import java.util.List; - -import org.apache.hadoop.metrics2.AbstractMetric; -import org.apache.hadoop.metrics2.MetricsInfo; -import org.apache.hadoop.metrics2.MetricsRecord; -import org.apache.hadoop.metrics2.MetricsTag; -import org.apache.hadoop.metrics2.impl.ExposedMetricCounterLong; -import org.apache.hadoop.metrics2.impl.ExposedMetricsRecordImpl; -import org.apache.hadoop.metrics2.lib.ExposedMetricsInfoImpl; -import org.apache.phoenix.metrics.MetricInfo; -import org.apache.phoenix.metrics.MetricsWriter; -import org.apache.phoenix.metrics.PhoenixAbstractMetric; -import org.apache.phoenix.metrics.PhoenixMetricTag; -import org.apache.phoenix.metrics.PhoenixMetricsRecord; -import org.junit.Test; -import org.mockito.Mockito; -import org.mockito.invocation.InvocationOnMock; -import org.mockito.stubbing.Answer; - -import com.google.common.collect.Lists; - -/** - * Test that we correctly convert between hadoop2 metrics2 and generic phoenix metrics. - */ -public class PhoenixMetricsWriterTest { - - @Test - public void testTranslation() throws Exception { - // hook up a sink we can test - MetricsWriter mockSink = Mockito.mock(MetricsWriter.class); - - // writer that will translate to the sink (specific to hadoop version used) - PhoenixMetricsSink writer = new PhoenixMetricsSink(); - writer.setWriterForTesting(mockSink); - - // create a simple metrics record - final long traceid = 987654; - MetricsInfo info = new ExposedMetricsInfoImpl(TracingCompat.getTraceMetricName(traceid), - "Some generic trace"); - // setup some metrics for the span - long spanid = 10; - AbstractMetric span = new ExposedMetricCounterLong(new ExposedMetricsInfoImpl( - MetricInfo.SPAN.traceName, ""), spanid); - long parentid = 11; - AbstractMetric parent = new ExposedMetricCounterLong(new ExposedMetricsInfoImpl( - MetricInfo.PARENT.traceName, ""), parentid); - long startTime = 12; - AbstractMetric start = new ExposedMetricCounterLong(new ExposedMetricsInfoImpl( - MetricInfo.START.traceName, ""), startTime); - long endTime = 13; - AbstractMetric end = new ExposedMetricCounterLong(new ExposedMetricsInfoImpl( - MetricInfo.END.traceName, ""), endTime); - final List metrics = Lists.newArrayList(span, parent, start, end); - - // create an annotation as well - String annotation = "test annotation for a span"; - MetricsTag tag = new MetricsTag( - new ExposedMetricsInfoImpl(MetricInfo.ANNOTATION.traceName, "0"), annotation); - String hostnameValue = "host-name.value"; - MetricsTag hostname = new MetricsTag(new ExposedMetricsInfoImpl(MetricInfo.HOSTNAME.traceName, - ""), hostnameValue); - final List tags = Lists.newArrayList(hostname, tag); - - MetricsRecord record = new ExposedMetricsRecordImpl(info, System.currentTimeMillis(), tags, - metrics); - - // setup the mocking/validation for the sink - Mockito.doAnswer(new Answer() { - - @Override - public Void answer(InvocationOnMock invocation) throws Throwable { - PhoenixMetricsRecord record = (PhoenixMetricsRecord) invocation.getArguments()[0]; - //validate that we got the right fields in the record - assertEquals("phoenix.987654", record.name()); - assertEquals("Some generic trace", record.description()); - int count = 0; - for (PhoenixAbstractMetric metric : record.metrics()) { - count++; - //find the matching metric in the list - boolean found = false; - for(AbstractMetric expected : metrics){ - if(expected.name().equals(metric.getName())){ - found = true; - // make sure the rest of the info matches - assertEquals("Metric value mismatch", expected.value(), metric.value()); - } - } - assertTrue("Didn't find an expected metric to match "+metric, found); - } - assertEquals("Number of metrics is received is wrong", metrics.size(), count); - - count = 0; - for (PhoenixMetricTag tag : record.tags()) { - count++; - // find the matching metric in the list - boolean found = false; - for (MetricsTag expected : tags) { - if (expected.name().equals(tag.name())) { - found = true; - // make sure the rest of the info matches - assertEquals("Tag value mismatch", expected.value(), tag.value()); - assertEquals("Tag description mismatch", expected.description(), tag.description()); - } - } - assertTrue("Didn't find an expected metric to match " + tag, found); - } - assertEquals("Number of tags is received is wrong", tags.size(), count); - return null; - } - - }).when(mockSink).addMetrics(Mockito.any(PhoenixMetricsRecord.class)); - - // actually do the update - writer.putMetrics(record); - writer.flush(); - - Mockito.verify(mockSink).addMetrics(Mockito.any(PhoenixMetricsRecord.class)); - Mockito.verify(mockSink).flush(); - } -} \ No newline at end of file diff --git a/phoenix-hadoop2-compat/src/test/java/org/apache/phoenix/trace/TracingTest.java b/phoenix-hadoop2-compat/src/test/java/org/apache/phoenix/trace/TracingTest.java deleted file mode 100644 index ffe6c827944..00000000000 --- a/phoenix-hadoop2-compat/src/test/java/org/apache/phoenix/trace/TracingTest.java +++ /dev/null @@ -1,34 +0,0 @@ -/** - * 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.trace; - -import static org.junit.Assert.assertNotNull; - -import org.junit.Test; - -public class TracingTest { - - /** - * Test that we can correctly load a class that will convert the tracing output to metrics - * @throws Exception on failure - */ - @Test - public void testLoadTracingToMetrics() throws Exception{ - assertNotNull("Didn't find a trace receiver", TracingCompat.newTraceMetricSource()); - } -} \ No newline at end of file diff --git a/pom.xml b/pom.xml index c7544f4ca52..888f5756d44 100644 --- a/pom.xml +++ b/pom.xml @@ -24,12 +24,9 @@ phoenix-core - phoenix-hadoop-compat phoenix-flume phoenix-pig phoenix-assembly - - phoenix-hadoop2-compat @@ -408,25 +405,6 @@ tests test - - org.apache.phoenix - phoenix-hadoop-compat - ${project.version} - - - org.apache.phoenix - phoenix-hadoop-compat - ${project.version} - tests - test - - - org.apache.phoenix - phoenix-hadoop2-compat - ${project.version} - tests - test - org.apache.phoenix phoenix-flume @@ -437,11 +415,6 @@ phoenix-pig ${project.version} - - org.apache.phoenix - phoenix-hadoop2-compat - ${project.version} -