You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuweni.apache.org by to...@apache.org on 2021/08/20 12:04:34 UTC

[incubator-tuweni] branch main updated: Tuning tracing to report more traces

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

toulmean pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-tuweni.git


The following commit(s) were added to refs/heads/main by this push:
     new 1a15844  Tuning tracing to report more traces
     new 73165cb  Merge pull request #341 from atoulme/tracing_tuning
1a15844 is described below

commit 1a15844a606e3d8dcee7ccca0a443712073d5b1e
Author: Antoine Toulme <an...@lunar-ocean.com>
AuthorDate: Thu Aug 19 22:48:26 2021 -0700

    Tuning tracing to report more traces
---
 .../main/kotlin/org/apache/tuweni/jsonrpc/app/JSONRPCApp.kt   |  4 +++-
 .../main/kotlin/org/apache/tuweni/jsonrpc/JSONRPCServer.kt    | 11 +++++++++++
 .../main/kotlin/org/apache/tuweni/metrics/MetricsService.kt   |  2 +-
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/jsonrpc-app/src/main/kotlin/org/apache/tuweni/jsonrpc/app/JSONRPCApp.kt b/jsonrpc-app/src/main/kotlin/org/apache/tuweni/jsonrpc/app/JSONRPCApp.kt
index 7bd963a..d729db1 100644
--- a/jsonrpc-app/src/main/kotlin/org/apache/tuweni/jsonrpc/app/JSONRPCApp.kt
+++ b/jsonrpc-app/src/main/kotlin/org/apache/tuweni/jsonrpc/app/JSONRPCApp.kt
@@ -152,7 +152,8 @@ class JSONRPCApplication(
 
     val handler = MeteredHandler(successCounter, failureCounter, throttlingHandler::handleRequest)
     val server = JSONRPCServer(
-      vertx, config.port(), config.networkInterface(),
+      vertx,
+      config.port(), config.networkInterface(),
       config.ssl(),
       trustOptions,
       config.useBasicAuthentication(),
@@ -160,6 +161,7 @@ class JSONRPCApplication(
       config.basicAuthPassword(),
       config.basicAuthRealm(),
       IPRangeChecker.create(config.allowedRanges(), config.rejectedRanges()),
+      metricsService.openTelemetry,
       Executors.newFixedThreadPool(
         config.numberOfThreads()
       ) {
diff --git a/jsonrpc/src/main/kotlin/org/apache/tuweni/jsonrpc/JSONRPCServer.kt b/jsonrpc/src/main/kotlin/org/apache/tuweni/jsonrpc/JSONRPCServer.kt
index 7ba0419..561c6e7 100644
--- a/jsonrpc/src/main/kotlin/org/apache/tuweni/jsonrpc/JSONRPCServer.kt
+++ b/jsonrpc/src/main/kotlin/org/apache/tuweni/jsonrpc/JSONRPCServer.kt
@@ -20,6 +20,9 @@ package org.apache.tuweni.jsonrpc
 
 import com.fasterxml.jackson.databind.DeserializationFeature
 import com.fasterxml.jackson.databind.ObjectMapper
+import io.opentelemetry.api.OpenTelemetry
+import io.opentelemetry.api.trace.SpanKind
+import io.opentelemetry.api.trace.StatusCode
 import io.vertx.core.AsyncResult
 import io.vertx.core.Future
 import io.vertx.core.Handler
@@ -66,6 +69,7 @@ class JSONRPCServer(
   val basicAuthenticationPassword: String? = null,
   val basicAuthRealm: String = "Apache Tuweni JSON-RPC proxy",
   val ipRangeChecker: IPRangeChecker = IPRangeChecker.allowAll(),
+  val openTelemetry: OpenTelemetry = OpenTelemetry.noop(),
   override val coroutineContext: CoroutineContext = Dispatchers.Default,
   val methodHandler: suspend (JSONRPCRequest) -> JSONRPCResponse,
 ) : CoroutineScope {
@@ -127,10 +131,14 @@ class JSONRPCServer(
       router.route().handler(basicAuthHandler)
     }
     router.route().handler { context ->
+      val tracer = openTelemetry.getTracer("jsonrpcserver")
+      val span = tracer.spanBuilder("handleRequest").setSpanKind(SpanKind.SERVER).startSpan()
       val httpRequest = context.request()
       httpRequest.exceptionHandler {
         logger.error(it.message, it)
         httpRequest.response().end(mapper.writeValueAsString(internalError))
+        span.setStatus(StatusCode.ERROR)
+        span.end()
       }
       httpRequest.bodyHandler {
         var requests: Array<JSONRPCRequest>
@@ -142,6 +150,8 @@ class JSONRPCServer(
           } catch (e: IOException) {
             logger.warn("Invalid request", e)
             httpRequest.response().end(mapper.writeValueAsString(parseError))
+            span.setStatus(StatusCode.ERROR)
+            span.end()
             return@bodyHandler
           }
         }
@@ -158,6 +168,7 @@ class JSONRPCServer(
           } else {
             httpRequest.response().end(mapper.writeValueAsString(readyResponses))
           }
+          span.end()
         }
       }
     }
diff --git a/metrics/src/main/kotlin/org/apache/tuweni/metrics/MetricsService.kt b/metrics/src/main/kotlin/org/apache/tuweni/metrics/MetricsService.kt
index e4507a2..2009e16 100644
--- a/metrics/src/main/kotlin/org/apache/tuweni/metrics/MetricsService.kt
+++ b/metrics/src/main/kotlin/org/apache/tuweni/metrics/MetricsService.kt
@@ -79,7 +79,7 @@ class MetricsService(
         .setTimeout(grpcTimeout, TimeUnit.MILLISECONDS).build()
     ).build()
     openTelemetry = OpenTelemetrySdk.builder()
-      .setTracerProvider(SdkTracerProvider.builder().addSpanProcessor(spanProcessor).build())
+      .setTracerProvider(SdkTracerProvider.builder().setResource(resource).addSpanProcessor(spanProcessor).build())
       .build()
 
     if (enablePrometheus) {

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@tuweni.apache.org
For additional commands, e-mail: commits-help@tuweni.apache.org