You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-issues@hadoop.apache.org by GitBox <gi...@apache.org> on 2020/03/04 00:54:05 UTC

[GitHub] [hadoop] jojochuang commented on a change in pull request #1846: HADOOP-15566. Support Opentracing

jojochuang commented on a change in pull request #1846: HADOOP-15566. Support Opentracing
URL: https://github.com/apache/hadoop/pull/1846#discussion_r387383409
 
 

 ##########
 File path: hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/tracing/TraceUtils.java
 ##########
 @@ -72,4 +97,71 @@ private String getInternal(String key) {
       }
     };
   }
+
+  public static Tracer createAndRegisterTracer(String name) {
+    if (!GlobalTracer.isRegistered()) {
+      io.jaegertracing.Configuration config =
+          io.jaegertracing.Configuration.fromEnv(name);
+      Tracer tracer = config.getTracerBuilder().build();
+      GlobalTracer.register(tracer);
+    }
+
+    return GlobalTracer.get();
+  }
+
+  public static SpanContext byteStringToSpanContext(ByteString byteString) {
+    if (byteString == null || byteString.isEmpty()) {
+      LOG.debug("The provided serialized context was null or empty");
+      return null;
+    }
+
+    SpanContext context = null;
+    ByteArrayInputStream stream =
+        new ByteArrayInputStream(byteString.toByteArray());
+
+    try {
+      ObjectInputStream objStream = new ObjectInputStream(stream);
+      Map<String, String> carrier =
+          (Map<String, String>) objStream.readObject();
+
+      context = GlobalTracer.get().extract(Format.Builtin.TEXT_MAP,
+          new TextMapExtractAdapter(carrier));
+    } catch (Exception e) {
+      LOG.warn("Could not deserialize context {}", e);
+    }
+
+    return context;
+  }
+
+  public static ByteString spanContextToByteString(SpanContext context) {
+    if (context == null) {
+      LOG.debug("No SpanContext was provided");
+      return null;
+    }
+
+    Map<String, String> carrier = new HashMap<String, String>();
+    GlobalTracer.get().inject(context, Format.Builtin.TEXT_MAP,
+        new TextMapInjectAdapter(carrier));
+    if (carrier.isEmpty()) {
+      LOG.warn("SpanContext was not properly injected by the Tracer.");
+      return null;
+    }
+
+    ByteString byteString = null;
+    ByteArrayOutputStream stream = new ByteArrayOutputStream();
+
+    try {
+      ObjectOutputStream objStream = new ObjectOutputStream(stream);
 
 Review comment:
   This is dangerous
   https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/ObjectInputStream.html
   "Warning: Deserialization of untrusted data is inherently dangerous and should be avoided."
   We need an alternative.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: common-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-issues-help@hadoop.apache.org