From b8053e47a08e63082f45006f9d77df11f5d16d16 Mon Sep 17 00:00:00 2001 From: "Alexander.Glukhov" Date: Wed, 31 Jul 2024 11:38:34 +0200 Subject: [PATCH] [opentelemetry] cleanup in telemetry.kt 1) Removed the enum with telemetry content's format 2) Split `export` method onto `sendJson` and `sendProtobuf` 3) Marked telemetry.kt as InternalApi GitOrigin-RevId: 671ab98459796f63f57dbed3818a9d10db98278f --- .../telemetry.exporters/api-dump.txt | 11 ------- .../src/OpenTelemetryRawTraceExporter.kt | 30 ++++++++++++------- .../GradleOpenTelemetryTraceService.kt | 2 +- .../idea/maven/telemetry/telemetry.kt | 2 +- 4 files changed, 22 insertions(+), 23 deletions(-) diff --git a/platform/diagnostic/telemetry.exporters/api-dump.txt b/platform/diagnostic/telemetry.exporters/api-dump.txt index 71a0712f2049..e69de29bb2d1 100644 --- a/platform/diagnostic/telemetry.exporters/api-dump.txt +++ b/platform/diagnostic/telemetry.exporters/api-dump.txt @@ -1,11 +0,0 @@ -f:com.intellij.platform.diagnostic.telemetry.exporters.OpenTelemetryRawTraceExporter -- sf:INSTANCE:com.intellij.platform.diagnostic.telemetry.exporters.OpenTelemetryRawTraceExporter -- f:export(java.net.URI,B[],com.intellij.platform.diagnostic.telemetry.exporters.OpenTelemetryRawTraceExporter$Protocol):V -e:com.intellij.platform.diagnostic.telemetry.exporters.OpenTelemetryRawTraceExporter$Protocol -- java.lang.Enum -- sf:JSON:com.intellij.platform.diagnostic.telemetry.exporters.OpenTelemetryRawTraceExporter$Protocol -- sf:PROTOBUF:com.intellij.platform.diagnostic.telemetry.exporters.OpenTelemetryRawTraceExporter$Protocol -- f:getContentType():java.lang.String -- s:getEntries():kotlin.enums.EnumEntries -- s:valueOf(java.lang.String):com.intellij.platform.diagnostic.telemetry.exporters.OpenTelemetryRawTraceExporter$Protocol -- s:values():com.intellij.platform.diagnostic.telemetry.exporters.OpenTelemetryRawTraceExporter$Protocol[] diff --git a/platform/diagnostic/telemetry.exporters/src/OpenTelemetryRawTraceExporter.kt b/platform/diagnostic/telemetry.exporters/src/OpenTelemetryRawTraceExporter.kt index c4587704d50e..eebad46d63d3 100644 --- a/platform/diagnostic/telemetry.exporters/src/OpenTelemetryRawTraceExporter.kt +++ b/platform/diagnostic/telemetry.exporters/src/OpenTelemetryRawTraceExporter.kt @@ -3,29 +3,39 @@ package com.intellij.platform.diagnostic.telemetry.exporters import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.diagnostic.logger +import org.jetbrains.annotations.ApiStatus import java.net.URI import java.net.http.HttpClient import java.net.http.HttpRequest import java.net.http.HttpResponse +@ApiStatus.Internal object OpenTelemetryRawTraceExporter { private val LOG: Logger = logger() - enum class Protocol(val contentType: String) { - PROTOBUF("application/x-protobuf"), - JSON("application/json") + fun sendProtobuf(targetUri: URI, binaryTraces: ByteArray) { + send(targetUri) { + POST(HttpRequest.BodyPublishers.ofByteArray(binaryTraces)) + header("Content-Type", "application/x-protobuf") + } } - fun export(targetUri: URI, binaryTraces: ByteArray, protocol: Protocol) { + fun sendJson(targetUri: URI, json: ByteArray) { + send(targetUri) { + POST(HttpRequest.BodyPublishers.ofByteArray(json)) + header("Content-Type", "application/json") + } + } + + private fun send(targetUri: URI, customizer: HttpRequest.Builder.() -> HttpRequest.Builder) { try { + val builder = HttpRequest.newBuilder().uri(targetUri) HttpClient.newHttpClient() - .send(HttpRequest.newBuilder() - .POST(HttpRequest.BodyPublishers.ofByteArray(binaryTraces)) - .uri(targetUri) - .header("Content-Type", protocol.contentType) - .build(), - HttpResponse.BodyHandlers.discarding()) + .send( + customizer(builder).build(), + HttpResponse.BodyHandlers.discarding() + ) } catch (e: Exception) { LOG.warn("Unable to upload performance traces to the OTLP server ($targetUri)") diff --git a/plugins/gradle/src/org/jetbrains/plugins/gradle/util/telemetry/GradleOpenTelemetryTraceService.kt b/plugins/gradle/src/org/jetbrains/plugins/gradle/util/telemetry/GradleOpenTelemetryTraceService.kt index e68bc901ddd1..3b56987c4ba7 100644 --- a/plugins/gradle/src/org/jetbrains/plugins/gradle/util/telemetry/GradleOpenTelemetryTraceService.kt +++ b/plugins/gradle/src/org/jetbrains/plugins/gradle/util/telemetry/GradleOpenTelemetryTraceService.kt @@ -16,7 +16,7 @@ class GradleOpenTelemetryTraceService(private val coroutineScope: CoroutineScope if (binaryTraces.isEmpty()) return val telemetryHost = getOtlpEndPoint() ?: return coroutineScope.launch { - OpenTelemetryRawTraceExporter.export(URI.create(telemetryHost), binaryTraces, OpenTelemetryRawTraceExporter.Protocol.PROTOBUF) + OpenTelemetryRawTraceExporter.sendProtobuf(URI.create(telemetryHost), binaryTraces) } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/telemetry/telemetry.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/telemetry/telemetry.kt index 57e27222feb1..09cf76da9939 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/telemetry/telemetry.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/telemetry/telemetry.kt @@ -55,6 +55,6 @@ internal fun scheduleExportTelemetryTrace(project: Project, binaryTrace: ByteArr val cs = MavenCoroutineScopeProvider.getCoroutineScope(project) cs.launch { - OpenTelemetryRawTraceExporter.export(URI.create(telemetryHost), binaryTrace, OpenTelemetryRawTraceExporter.Protocol.PROTOBUF) + OpenTelemetryRawTraceExporter.sendProtobuf(URI.create(telemetryHost), binaryTrace) } } \ No newline at end of file