You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ta...@apache.org on 2021/09/01 22:29:55 UTC

[hbase] 10/18: HBASE-26133 Backport HBASE-25591 "Upgrade opentelemetry to 0.17.1" to branch-2 (#3608)

This is an automated email from the ASF dual-hosted git repository.

taklwu pushed a commit to branch branch-2
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit d0a53e3f297cc7060782f94e02c86c10d6114af7
Author: Tak Lon (Stephen) Wu <ta...@apache.org>
AuthorDate: Mon Aug 23 08:52:07 2021 -0700

    HBASE-26133 Backport HBASE-25591 "Upgrade opentelemetry to 0.17.1" to branch-2 (#3608)
    
    10/17 commits of HBASE-22120, original commit f6ff519dd0c7fe0e3ae3c175eefee27a26a065a4
    
    Co-authored-by: Duo Zhang <zh...@apache.org>
    
    Signed-off-by: Duo Zhang <zh...@apache.org>
    Signed-off-by: Peter Somogyi <ps...@apache.org>
---
 .../hadoop/hbase/client/TestAsyncTableTracing.java |  6 +++---
 hbase-common/pom.xml                               |  4 ++++
 .../org/apache/hadoop/hbase/trace/TraceUtil.java   | 25 +++++++++++-----------
 .../hadoop/hbase/mttr/IntegrationTestMTTR.java     |  3 +--
 .../hadoop/hbase/ipc/ServerRpcConnection.java      |  4 ++--
 .../apache/hadoop/hbase/ipc/AbstractTestIPC.java   | 14 ++++++------
 .../hbase/regionserver/TestHRegionTracing.java     | 15 ++++++-------
 pom.xml                                            | 18 +++++++---------
 8 files changed, 44 insertions(+), 45 deletions(-)

diff --git a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncTableTracing.java b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncTableTracing.java
index 07cdf0e..a3ad9df 100644
--- a/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncTableTracing.java
+++ b/hbase-client/src/test/java/org/apache/hadoop/hbase/client/TestAsyncTableTracing.java
@@ -24,7 +24,7 @@ import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.mock;
 
-import io.opentelemetry.api.trace.Span.Kind;
+import io.opentelemetry.api.trace.SpanKind;
 import io.opentelemetry.api.trace.StatusCode;
 import io.opentelemetry.sdk.testing.junit4.OpenTelemetryRule;
 import io.opentelemetry.sdk.trace.data.SpanData;
@@ -222,7 +222,7 @@ public class TestAsyncTableTracing {
     Waiter.waitFor(CONF, 1000,
       () -> traceRule.getSpans().stream()
         .anyMatch(span -> span.getName().equals("AsyncTable." + methodName) &&
-          span.getKind() == Kind.INTERNAL && span.hasEnded()));
+          span.getKind() == SpanKind.INTERNAL && span.hasEnded()));
     SpanData data = traceRule.getSpans().stream()
       .filter(s -> s.getName().equals("AsyncTable." + methodName)).findFirst().get();
     assertEquals(StatusCode.OK, data.getStatus().getStatusCode());
@@ -409,7 +409,7 @@ public class TestAsyncTableTracing {
     Waiter.waitFor(CONF, 1000,
       () -> traceRule.getSpans().stream()
         .anyMatch(span -> span.getName().equals("AsyncConnection.close") &&
-          span.getKind() == Kind.INTERNAL && span.hasEnded()));
+          span.getKind() == SpanKind.INTERNAL && span.hasEnded()));
     SpanData data = traceRule.getSpans().stream()
       .filter(s -> s.getName().equals("AsyncConnection.close")).findFirst().get();
     assertEquals(StatusCode.OK, data.getStatus().getStatusCode());
diff --git a/hbase-common/pom.xml b/hbase-common/pom.xml
index 62661b8..2212fd1 100644
--- a/hbase-common/pom.xml
+++ b/hbase-common/pom.xml
@@ -196,6 +196,10 @@
       <artifactId>opentelemetry-api</artifactId>
     </dependency>
     <dependency>
+      <groupId>io.opentelemetry</groupId>
+      <artifactId>opentelemetry-semconv</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-crypto</artifactId>
     </dependency>
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/trace/TraceUtil.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/trace/TraceUtil.java
index 2a6b6b6..43c2e04 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/trace/TraceUtil.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/trace/TraceUtil.java
@@ -20,12 +20,12 @@ package org.apache.hadoop.hbase.trace;
 import io.opentelemetry.api.GlobalOpenTelemetry;
 import io.opentelemetry.api.common.AttributeKey;
 import io.opentelemetry.api.trace.Span;
-import io.opentelemetry.api.trace.Span.Kind;
+import io.opentelemetry.api.trace.SpanKind;
 import io.opentelemetry.api.trace.StatusCode;
 import io.opentelemetry.api.trace.Tracer;
-import io.opentelemetry.api.trace.attributes.SemanticAttributes;
 import io.opentelemetry.context.Context;
 import io.opentelemetry.context.Scope;
+import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
 import java.io.IOException;
 import java.util.List;
 import java.util.concurrent.CompletableFuture;
@@ -72,14 +72,14 @@ public final class TraceUtil {
   }
 
   /**
-   * Create a {@link Kind#INTERNAL} span.
+   * Create a {@link SpanKind#INTERNAL} span.
    */
   public static Span createSpan(String name) {
-    return createSpan(name, Kind.INTERNAL);
+    return createSpan(name, SpanKind.INTERNAL);
   }
 
   /**
-   * Create a {@link Kind#INTERNAL} span and set table related attributes.
+   * Create a {@link SpanKind#INTERNAL} span and set table related attributes.
    */
   public static Span createTableSpan(String spanName, TableName tableName) {
     return createSpan(spanName).setAttribute(NAMESPACE_KEY, tableName.getNamespaceAsString())
@@ -88,28 +88,29 @@ public final class TraceUtil {
 
   /**
    * Create a span with the given {@code kind}. Notice that, OpenTelemetry only expects one
-   * {@link Kind#CLIENT} span and one {@link Kind#SERVER} span for a traced request, so use this
-   * with caution when you want to create spans with kind other than {@link Kind#INTERNAL}.
+   * {@link SpanKind#CLIENT} span and one {@link SpanKind#SERVER} span for a traced request, so use
+   * this with caution when you want to create spans with kind other than {@link SpanKind#INTERNAL}.
    */
-  private static Span createSpan(String name, Kind kind) {
+  private static Span createSpan(String name, SpanKind kind) {
     return getGlobalTracer().spanBuilder(name).setSpanKind(kind).startSpan();
   }
 
   /**
    * Create a span which parent is from remote, i.e, passed through rpc.
    * </p>
-   * We will set the kind of the returned span to {@link Kind#SERVER}, as this should be the top
+   * We will set the kind of the returned span to {@link SpanKind#SERVER}, as this should be the top
    * most span at server side.
    */
   public static Span createRemoteSpan(String name, Context ctx) {
-    return getGlobalTracer().spanBuilder(name).setParent(ctx).setSpanKind(Kind.SERVER).startSpan();
+    return getGlobalTracer().spanBuilder(name).setParent(ctx).setSpanKind(SpanKind.SERVER)
+      .startSpan();
   }
 
   /**
-   * Create a span with {@link Kind#CLIENT}.
+   * Create a span with {@link SpanKind#CLIENT}.
    */
   public static Span createClientSpan(String name) {
-    return createSpan(name, Kind.CLIENT);
+    return createSpan(name, SpanKind.CLIENT);
   }
 
   /**
diff --git a/hbase-it/src/test/java/org/apache/hadoop/hbase/mttr/IntegrationTestMTTR.java b/hbase-it/src/test/java/org/apache/hadoop/hbase/mttr/IntegrationTestMTTR.java
index 5e390d2..13e0f0a 100644
--- a/hbase-it/src/test/java/org/apache/hadoop/hbase/mttr/IntegrationTestMTTR.java
+++ b/hbase-it/src/test/java/org/apache/hadoop/hbase/mttr/IntegrationTestMTTR.java
@@ -54,7 +54,6 @@ import org.apache.hadoop.hbase.client.ResultScanner;
 import org.apache.hadoop.hbase.client.RetriesExhaustedException;
 import org.apache.hadoop.hbase.client.Scan;
 import org.apache.hadoop.hbase.client.Table;
-import org.apache.hadoop.hbase.client.TableDescriptor;
 import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
 import org.apache.hadoop.hbase.coprocessor.CoprocessorException;
 import org.apache.hadoop.hbase.filter.KeyOnlyFilter;
@@ -377,7 +376,7 @@ public class IntegrationTestMTTR {
     public void addResult(long time, Span span) {
       stats.addValue(TimeUnit.MILLISECONDS.convert(time, TimeUnit.NANOSECONDS));
       if (TimeUnit.SECONDS.convert(time, TimeUnit.NANOSECONDS) >= 1) {
-        traces.add(span.getSpanContext().getTraceIdAsHexString());
+        traces.add(span.getSpanContext().getTraceId());
       }
     }
 
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/ServerRpcConnection.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/ServerRpcConnection.java
index 823005b..208ec8b 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/ServerRpcConnection.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/ServerRpcConnection.java
@@ -23,7 +23,7 @@ import io.opentelemetry.api.GlobalOpenTelemetry;
 import io.opentelemetry.api.trace.Span;
 import io.opentelemetry.context.Context;
 import io.opentelemetry.context.Scope;
-import io.opentelemetry.context.propagation.TextMapPropagator;
+import io.opentelemetry.context.propagation.TextMapGetter;
 import java.io.ByteArrayInputStream;
 import java.io.Closeable;
 import java.io.DataOutputStream;
@@ -615,7 +615,7 @@ abstract class ServerRpcConnection implements Closeable {
     ProtobufUtil.mergeFrom(builder, cis, headerSize);
     RequestHeader header = (RequestHeader) builder.build();
     offset += headerSize;
-    TextMapPropagator.Getter<RPCTInfo> getter = new TextMapPropagator.Getter<RPCTInfo>() {
+    TextMapGetter<RPCTInfo> getter = new TextMapGetter<RPCTInfo>() {
 
       @Override
       public Iterable<String> keys(RPCTInfo carrier) {
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/AbstractTestIPC.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/AbstractTestIPC.java
index c4951b2..ce75343 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/AbstractTestIPC.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/ipc/AbstractTestIPC.java
@@ -34,7 +34,7 @@ import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.internal.verification.VerificationModeFactory.times;
 
-import io.opentelemetry.api.trace.Span.Kind;
+import io.opentelemetry.api.trace.SpanKind;
 import io.opentelemetry.api.trace.StatusCode;
 import io.opentelemetry.sdk.testing.junit4.OpenTelemetryRule;
 import io.opentelemetry.sdk.trace.data.SpanData;
@@ -457,7 +457,7 @@ public abstract class AbstractTestIPC {
   }
 
   private void assertRpcAttribute(SpanData data, String methodName, InetSocketAddress addr,
-    Kind kind) {
+    SpanKind kind) {
     assertEquals(SERVICE.getDescriptorForType().getName(),
       data.getAttributes().get(TraceUtil.RPC_SERVICE_KEY));
     assertEquals(methodName, data.getAttributes().get(TraceUtil.RPC_METHOD_KEY));
@@ -471,7 +471,7 @@ public abstract class AbstractTestIPC {
   private void assertRemoteSpan() {
     SpanData data = waitSpan("RpcServer.process");
     assertTrue(data.getParentSpanContext().isRemote());
-    assertEquals(Kind.SERVER, data.getKind());
+    assertEquals(SpanKind.SERVER, data.getKind());
   }
 
   @Test
@@ -484,8 +484,8 @@ public abstract class AbstractTestIPC {
       BlockingInterface stub = newBlockingStub(client, rpcServer.getListenerAddress());
       stub.pause(null, PauseRequestProto.newBuilder().setMs(100).build());
       assertRpcAttribute(waitSpan("RpcClient.callMethod"), "pause", rpcServer.getListenerAddress(),
-        Kind.CLIENT);
-      assertRpcAttribute(waitSpan("RpcServer.callMethod"), "pause", null, Kind.INTERNAL);
+        SpanKind.CLIENT);
+      assertRpcAttribute(waitSpan("RpcServer.callMethod"), "pause", null, SpanKind.INTERNAL);
       assertRemoteSpan();
       assertSameTraceId();
       for (SpanData data : traceRule.getSpans()) {
@@ -499,8 +499,8 @@ public abstract class AbstractTestIPC {
       assertThrows(ServiceException.class,
         () -> stub.error(null, EmptyRequestProto.getDefaultInstance()));
       assertRpcAttribute(waitSpan("RpcClient.callMethod"), "error", rpcServer.getListenerAddress(),
-        Kind.CLIENT);
-      assertRpcAttribute(waitSpan("RpcServer.callMethod"), "error", null, Kind.INTERNAL);
+        SpanKind.CLIENT);
+      assertRpcAttribute(waitSpan("RpcServer.callMethod"), "error", null, SpanKind.INTERNAL);
       assertRemoteSpan();
       assertSameTraceId();
       for (SpanData data : traceRule.getSpans()) {
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionTracing.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionTracing.java
index 3a772a2..17c3eb4 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionTracing.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestHRegionTracing.java
@@ -23,6 +23,7 @@ import io.opentelemetry.sdk.testing.junit4.OpenTelemetryRule;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
 import org.apache.hadoop.hbase.TableName;
@@ -48,7 +49,6 @@ import org.apache.hadoop.hbase.wal.WAL;
 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Rule;
 import org.junit.Test;
@@ -79,18 +79,12 @@ public class TestHRegionTracing {
   @Rule
   public final TableNameTestRule tableNameRule = new TableNameTestRule();
 
-  private static WAL WAL;
+  private WAL wal;
 
   private HRegion region;
 
-  @BeforeClass
-  public static void setUpBeforeClass() throws IOException {
-    WAL = HBaseTestingUtility.createWal(UTIL.getConfiguration(), UTIL.getDataTestDir(), null);
-  }
-
   @AfterClass
   public static void tearDownAfterClass() throws IOException {
-    Closeables.close(WAL, true);
     UTIL.cleanupTestDir();
   }
 
@@ -102,7 +96,9 @@ public class TestHRegionTracing {
     RegionInfo info = RegionInfoBuilder.newBuilder(tableName).build();
     ChunkCreator.initialize(MemStoreLAB.CHUNK_SIZE_DEFAULT, false, 0, 0, 0, null,
       MemStoreLAB.INDEX_CHUNK_SIZE_PERCENTAGE_DEFAULT);
-    region = HRegion.createHRegion(info, UTIL.getDataTestDir(), UTIL.getConfiguration(), desc, WAL);
+    wal = HBaseTestingUtility.createWal(UTIL.getConfiguration(),
+      new Path(UTIL.getDataTestDir(), tableName.getNameAsString()), null);
+    region = HRegion.createHRegion(info, UTIL.getDataTestDir(), UTIL.getConfiguration(), desc, wal);
     region = UTIL.createLocalHRegion(info, desc);
   }
 
@@ -111,6 +107,7 @@ public class TestHRegionTracing {
     if (region != null) {
       region.close();
     }
+    Closeables.close(wal, true);
   }
 
   private void assertSpan(String spanName) {
diff --git a/pom.xml b/pom.xml
index 9fcf86b..6f04e4d 100755
--- a/pom.xml
+++ b/pom.xml
@@ -1483,7 +1483,8 @@
     <jruby.version>9.2.13.0</jruby.version>
     <junit.version>4.13</junit.version>
     <hamcrest.version>1.3</hamcrest.version>
-    <opentelemetry.version>0.13.1</opentelemetry.version>
+    <opentelemetry.version>0.17.1</opentelemetry.version>
+    <opentelemetry-javaagent.version>0.17.0</opentelemetry-javaagent.version>
     <log4j.version>1.2.17</log4j.version>
     <mockito-core.version>2.28.2</mockito-core.version>
     <!--Internally we use a different version of protobuf. See hbase-protocol-shaded-->
@@ -2176,23 +2177,20 @@
       </dependency>
       <dependency>
         <groupId>io.opentelemetry</groupId>
-        <artifactId>opentelemetry-api</artifactId>
-        <version>${opentelemetry.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>io.opentelemetry</groupId>
-        <artifactId>opentelemetry-sdk</artifactId>
+        <artifactId>opentelemetry-bom</artifactId>
         <version>${opentelemetry.version}</version>
+        <type>pom</type>
+        <scope>import</scope>
       </dependency>
       <dependency>
         <groupId>io.opentelemetry</groupId>
-        <artifactId>opentelemetry-sdk-testing</artifactId>
-        <version>${opentelemetry.version}</version>
+        <artifactId>opentelemetry-semconv</artifactId>
+        <version>${opentelemetry.version}-alpha</version>
       </dependency>
       <dependency>
         <groupId>io.opentelemetry.javaagent</groupId>
         <artifactId>opentelemetry-javaagent</artifactId>
-        <version>${opentelemetry.version}</version>
+        <version>${opentelemetry-javaagent.version}</version>
         <classifier>all</classifier>
       </dependency>
       <dependency>