[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
This commit is contained in:
Alexander.Glukhov
2024-07-31 11:38:34 +02:00
committed by intellij-monorepo-bot
parent b2a33aa906
commit b8053e47a0
4 changed files with 22 additions and 23 deletions

View File

@@ -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[]

View File

@@ -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<OpenTelemetryRawTraceExporter>()
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)")

View File

@@ -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)
}
}

View File

@@ -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)
}
}