From cb3fda2ec88f7a752ad132005459eedacdde4a78 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 28 Jan 2026 03:05:11 +0000
Subject: [PATCH 1/5] Initial plan
From a4fa22c790664e68d94383554a8c2eaa1f2b715e Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 28 Jan 2026 03:10:15 +0000
Subject: [PATCH 2/5] Update semantic conventions to 1.39.0
Co-authored-by: trask <218610+trask@users.noreply.github.com>
---
CHANGELOG.md | 4 +
build.gradle.kts | 3 +-
.../incubating/CloudIncubatingAttributes.java | 21 ++
.../ContainerIncubatingAttributes.java | 6 +-
.../incubating/DbIncubatingAttributes.java | 4 +-
.../incubating/ErrorIncubatingAttributes.java | 2 +-
.../incubating/GenAiIncubatingAttributes.java | 3 +
.../JsonrpcIncubatingAttributes.java | 40 +++
.../incubating/K8sIncubatingAttributes.java | 41 +++
.../incubating/LinuxIncubatingAttributes.java | 14 +-
.../incubating/McpIncubatingAttributes.java | 130 ++++++++++
.../incubating/OtelIncubatingAttributes.java | 12 +
.../incubating/PeerIncubatingAttributes.java | 4 +-
.../incubating/PprofIncubatingAttributes.java | 26 ++
.../incubating/RpcIncubatingAttributes.java | 241 +++++++++++++-----
.../ServiceIncubatingAttributes.java | 18 +-
.../SystemIncubatingAttributes.java | 15 ++
.../UserAgentIncubatingAttributes.java | 4 +-
.../opentelemetry/semconv/DbAttributes.java | 4 +-
.../semconv/ErrorAttributes.java | 2 +-
.../io/opentelemetry/semconv/SchemaUrls.java | 1 +
.../semconv/ServiceAttributes.java | 3 +-
22 files changed, 516 insertions(+), 82 deletions(-)
create mode 100644 semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/JsonrpcIncubatingAttributes.java
create mode 100644 semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/McpIncubatingAttributes.java
diff --git a/CHANGELOG.md b/CHANGELOG.md
index bf26961a..ab12fe0c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,10 @@
## Unreleased
+## Version 1.39.0 (2026-01-28)
+
+* Bump to semconv v1.39.0
+
## Version 1.38.0 (2026-01-27)
* Bump to semconv v1.38.0
diff --git a/build.gradle.kts b/build.gradle.kts
index 13647505..93a8e729 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -11,9 +11,10 @@ val snapshot = true
// end
// The release version of https://github.com/open-telemetry/semantic-conventions used to generate classes
-var semanticConventionsVersion = "1.38.0"
+var semanticConventionsVersion = "1.39.0"
val schemaUrlVersions = listOf(
semanticConventionsVersion,
+ "1.38.0",
"1.37.0",
"1.36.0",
"1.35.0",
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/CloudIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/CloudIncubatingAttributes.java
index 2ca29bdd..205012d6 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/CloudIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/CloudIncubatingAttributes.java
@@ -95,6 +95,9 @@ public final class CloudIncubatingAttributes {
/** Values for {@link #CLOUD_PLATFORM}. */
public static final class CloudPlatformIncubatingValues {
+ /** Akamai Cloud Compute */
+ public static final String AKAMAI_CLOUD_COMPUTE = "akamai_cloud.compute";
+
/** Alibaba Cloud Elastic Compute Service */
public static final String ALIBABA_CLOUD_ECS = "alibaba_cloud_ecs";
@@ -146,6 +149,9 @@ public static final class CloudPlatformIncubatingValues {
/** Azure Red Hat OpenShift */
public static final String AZURE_OPENSHIFT = "azure.openshift";
+ /** Google Vertex AI Agent Engine */
+ public static final String GCP_AGENT_ENGINE = "gcp.agent_engine";
+
/** Google Bare Metal Solution (BMS) */
public static final String GCP_BARE_METAL_SOLUTION = "gcp_bare_metal_solution";
@@ -167,6 +173,9 @@ public static final class CloudPlatformIncubatingValues {
/** Red Hat OpenShift on Google Cloud */
public static final String GCP_OPENSHIFT = "gcp_openshift";
+ /** Server on Hetzner Cloud */
+ public static final String HETZNER_CLOUD_SERVER = "hetzner.cloud_server";
+
/** Red Hat OpenShift on IBM Cloud */
public static final String IBM_CLOUD_OPENSHIFT = "ibm_cloud_openshift";
@@ -185,11 +194,17 @@ public static final class CloudPlatformIncubatingValues {
/** Tencent Cloud Serverless Cloud Function (SCF) */
public static final String TENCENT_CLOUD_SCF = "tencent_cloud_scf";
+ /** Vultr Cloud Compute */
+ public static final String VULTR_CLOUD_COMPUTE = "vultr.cloud_compute";
+
private CloudPlatformIncubatingValues() {}
}
/** Values for {@link #CLOUD_PROVIDER}. */
public static final class CloudProviderIncubatingValues {
+ /** Akamai Cloud */
+ public static final String AKAMAI_CLOUD = "akamai_cloud";
+
/** Alibaba Cloud */
public static final String ALIBABA_CLOUD = "alibaba_cloud";
@@ -205,6 +220,9 @@ public static final class CloudProviderIncubatingValues {
/** Heroku Platform as a Service */
public static final String HEROKU = "heroku";
+ /** Hetzner */
+ public static final String HETZNER = "hetzner";
+
/** IBM Cloud */
public static final String IBM_CLOUD = "ibm_cloud";
@@ -214,6 +232,9 @@ public static final class CloudProviderIncubatingValues {
/** Tencent Cloud */
public static final String TENCENT_CLOUD = "tencent_cloud";
+ /** Vultr */
+ public static final String VULTR = "vultr";
+
private CloudProviderIncubatingValues() {}
}
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ContainerIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ContainerIncubatingAttributes.java
index 798552c5..d5c108f5 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ContainerIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ContainerIncubatingAttributes.java
@@ -82,7 +82,7 @@ public final class ContainerIncubatingAttributes {
*
*
Docker defines a sha256 of the image id; {@code container.image.id} corresponds to the
* {@code Image} field from the Docker container inspect API
+ * href="https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Container/operation/ContainerInspect">API
* endpoint. K8s defines a link to the container registry repository with digest {@code "imageID":
* "registry.azurecr.io
* /namespace/service/dockerfile@sha256:bdeabd40c3a8a492eaf9e8e44d0ebbb84bac7ee25ac0cf8a7159d25f62555625"}.
@@ -101,7 +101,7 @@ public final class ContainerIncubatingAttributes {
*
Notes:
*
*
Docker
+ * href="https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect">Docker
* and CRI
* report those under the {@code RepoDigests} field.
@@ -111,7 +111,7 @@ public final class ContainerIncubatingAttributes {
/**
* Container image tags. An example can be found in Docker
+ * href="https://docs.docker.com/reference/api/engine/version/v1.52/#tag/Image/operation/ImageInspect">Docker
* Image Inspect. Should be only the {@code } section of the full name for example from
* {@code registry.example.com/my-org/my-image:}.
*/
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/DbIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/DbIncubatingAttributes.java
index 5f8605e6..58fabbac 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/DbIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/DbIncubatingAttributes.java
@@ -422,7 +422,7 @@ public final class DbIncubatingAttributes {
* Summary may be available to the instrumentation through instrumentation hooks or other
* means. If it is not available, instrumentations that support query parsing SHOULD generate a
* summary following Generating query
+ * href="/docs/db/database-spans.md#generating-a-summary-of-the-query">Generating query
* summary section.
*
* @deprecated deprecated in favor of stable {@link
@@ -437,7 +437,7 @@ public final class DbIncubatingAttributes {
*
Notes:
*
*
For sanitization see Sanitization of {@code
+ * href="/docs/db/database-spans.md#sanitization-of-dbquerytext">Sanitization of {@code
* db.query.text}. For batch operations, if the individual operations are known to have the
* same query text then that query text SHOULD be used, otherwise all of the individual query
* texts SHOULD be concatenated with separator {@code ; } or some other database system specific
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ErrorIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ErrorIncubatingAttributes.java
index a9fc9ad2..983e7b49 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ErrorIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ErrorIncubatingAttributes.java
@@ -47,7 +47,7 @@ public final class ErrorIncubatingAttributes {
*
If the operation has completed successfully, instrumentations SHOULD NOT set {@code
* error.type}.
*
- *
If a specific domain defines its own set of error identifiers (such as HTTP or gRPC status
+ *
If a specific domain defines its own set of error identifiers (such as HTTP or RPC status
* codes), it's RECOMMENDED to:
*
*
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/GenAiIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/GenAiIncubatingAttributes.java
index 66d6a260..585f4e76 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/GenAiIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/GenAiIncubatingAttributes.java
@@ -166,6 +166,9 @@ public final class GenAiIncubatingAttributes {
*/
@Deprecated public static final AttributeKey GEN_AI_PROMPT = stringKey("gen_ai.prompt");
+ /** The name of the prompt that uniquely identifies it. */
+ public static final AttributeKey GEN_AI_PROMPT_NAME = stringKey("gen_ai.prompt.name");
+
/**
* The Generative AI provider as identified by the client or server instrumentation.
*
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/JsonrpcIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/JsonrpcIncubatingAttributes.java
new file mode 100644
index 00000000..ae9a734c
--- /dev/null
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/JsonrpcIncubatingAttributes.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright The OpenTelemetry Authors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package io.opentelemetry.semconv.incubating;
+
+import static io.opentelemetry.api.common.AttributeKey.stringKey;
+
+import io.opentelemetry.api.common.AttributeKey;
+
+// DO NOT EDIT, this is an Auto-generated file from
+// buildscripts/templates/registry/incubating_java/IncubatingSemanticAttributes.java.j2
+@SuppressWarnings("unused")
+public final class JsonrpcIncubatingAttributes {
+ /**
+ * Protocol version, as specified in the {@code jsonrpc} property of the request and its
+ * corresponding response.
+ */
+ public static final AttributeKey JSONRPC_PROTOCOL_VERSION =
+ stringKey("jsonrpc.protocol.version");
+
+ /**
+ * A string representation of the {@code id} property of the request and its corresponding
+ * response.
+ *
+ * Notes:
+ *
+ *
Under the JSON-RPC specification, the
+ * {@code id} property may be a string, number, null, or omitted entirely. When omitted, the
+ * request is treated as a notification. Using {@code null} is not equivalent to omitting the
+ * {@code id}, but it is discouraged. Instrumentations SHOULD NOT capture this attribute when the
+ * {@code id} is {@code null} or omitted.
+ */
+ public static final AttributeKey JSONRPC_REQUEST_ID = stringKey("jsonrpc.request.id");
+
+ // Enum definitions
+
+ private JsonrpcIncubatingAttributes() {}
+}
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/K8sIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/K8sIncubatingAttributes.java
index 6bcf182b..35a66bfe 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/K8sIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/K8sIncubatingAttributes.java
@@ -445,6 +445,33 @@ public final class K8sIncubatingAttributes {
public static final AttributeKeyTemplate K8S_POD_ANNOTATION =
stringKeyTemplate("k8s.pod.annotation");
+ /**
+ * Specifies the hostname of the Pod.
+ *
+ * Notes:
+ *
+ *
The K8s Pod spec has an optional hostname field, which can be used to specify a hostname.
+ * Refer to K8s
+ * docs for more information about this field.
+ *
+ *
This attribute aligns with the {@code hostname} field of the K8s
+ * PodSpec.
+ */
+ public static final AttributeKey K8S_POD_HOSTNAME = stringKey("k8s.pod.hostname");
+
+ /**
+ * IP address allocated to the Pod.
+ *
+ * Notes:
+ *
+ *
This attribute aligns with the {@code podIP} field of the K8s
+ * PodStatus.
+ */
+ public static final AttributeKey K8S_POD_IP = stringKey("k8s.pod.ip");
+
/**
* The label placed on the Pod, the {@code } being the label name, the value being the label
* value.
@@ -477,6 +504,20 @@ public final class K8sIncubatingAttributes {
/** The name of the Pod. */
public static final AttributeKey K8S_POD_NAME = stringKey("k8s.pod.name");
+ /**
+ * The start timestamp of the Pod.
+ *
+ * Notes:
+ *
+ *
Date and time at which the object was acknowledged by the Kubelet. This is before the
+ * Kubelet pulled the container image(s) for the pod.
+ *
+ *
This attribute aligns with the {@code startTime} field of the K8s
+ * PodStatus, in ISO 8601 (RFC 3339 compatible) format.
+ */
+ public static final AttributeKey K8S_POD_START_TIME = stringKey("k8s.pod.start_time");
+
/**
* The phase for the pod. Corresponds to the {@code phase} field of the: K8s
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/LinuxIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/LinuxIncubatingAttributes.java
index 9db8b3f9..b38a900d 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/LinuxIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/LinuxIncubatingAttributes.java
@@ -13,13 +13,23 @@
// buildscripts/templates/registry/incubating_java/IncubatingSemanticAttributes.java.j2
@SuppressWarnings("unused")
public final class LinuxIncubatingAttributes {
- /** The Linux Slab memory state */
+ /**
+ * The Linux Slab memory state
+ *
+ * @deprecated Replaced by {@code system.memory.linux.slab.state}.
+ */
+ @Deprecated
public static final AttributeKey LINUX_MEMORY_SLAB_STATE =
stringKey("linux.memory.slab.state");
// Enum definitions
- /** Values for {@link #LINUX_MEMORY_SLAB_STATE}. */
+ /**
+ * Values for {@link #LINUX_MEMORY_SLAB_STATE}
+ *
+ * @deprecated Replaced by {@code system.memory.linux.slab.state}.
+ */
+ @Deprecated
public static final class LinuxMemorySlabStateIncubatingValues {
/** reclaimable. */
public static final String RECLAIMABLE = "reclaimable";
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/McpIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/McpIncubatingAttributes.java
new file mode 100644
index 00000000..59e1994c
--- /dev/null
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/McpIncubatingAttributes.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright The OpenTelemetry Authors
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+package io.opentelemetry.semconv.incubating;
+
+import static io.opentelemetry.api.common.AttributeKey.stringKey;
+
+import io.opentelemetry.api.common.AttributeKey;
+
+// DO NOT EDIT, this is an Auto-generated file from
+// buildscripts/templates/registry/incubating_java/IncubatingSemanticAttributes.java.j2
+@SuppressWarnings("unused")
+public final class McpIncubatingAttributes {
+ /** The name of the request or notification method. */
+ public static final AttributeKey MCP_METHOD_NAME = stringKey("mcp.method.name");
+
+ /**
+ * The version of the Model
+ * Context Protocol used.
+ */
+ public static final AttributeKey MCP_PROTOCOL_VERSION = stringKey("mcp.protocol.version");
+
+ /**
+ * The value of the resource uri.
+ *
+ * Notes:
+ *
+ *
This is a URI of the resource provided in the following requests or notifications: {@code
+ * resources/read}, {@code resources/subscribe}, {@code resources/unsubscribe}, or {@code
+ * notifications/resources/updated}.
+ */
+ public static final AttributeKey MCP_RESOURCE_URI = stringKey("mcp.resource.uri");
+
+ /**
+ * Identifies MCP
+ * session.
+ */
+ public static final AttributeKey MCP_SESSION_ID = stringKey("mcp.session.id");
+
+ // Enum definitions
+
+ /** Values for {@link #MCP_METHOD_NAME}. */
+ public static final class McpMethodNameIncubatingValues {
+ /** Notification cancelling a previously-issued request. */
+ public static final String NOTIFICATIONS_CANCELLED = "notifications/cancelled";
+
+ /** Request to initialize the MCP client. */
+ public static final String INITIALIZE = "initialize";
+
+ /** Notification indicating that the MCP client has been initialized. */
+ public static final String NOTIFICATIONS_INITIALIZED = "notifications/initialized";
+
+ /** Notification indicating the progress for a long-running operation. */
+ public static final String NOTIFICATIONS_PROGRESS = "notifications/progress";
+
+ /** Request to check that the other party is still alive. */
+ public static final String PING = "ping";
+
+ /** Request to list resources available on server. */
+ public static final String RESOURCES_LIST = "resources/list";
+
+ /** Request to list resource templates available on server. */
+ public static final String RESOURCES_TEMPLATES_LIST = "resources/templates/list";
+
+ /** Request to read a resource. */
+ public static final String RESOURCES_READ = "resources/read";
+
+ /** Notification indicating that the list of resources has changed. */
+ public static final String NOTIFICATIONS_RESOURCES_LIST_CHANGED =
+ "notifications/resources/list_changed";
+
+ /** Request to subscribe to a resource. */
+ public static final String RESOURCES_SUBSCRIBE = "resources/subscribe";
+
+ /** Request to unsubscribe from resource updates. */
+ public static final String RESOURCES_UNSUBSCRIBE = "resources/unsubscribe";
+
+ /** Notification indicating that a resource has been updated. */
+ public static final String NOTIFICATIONS_RESOURCES_UPDATED = "notifications/resources/updated";
+
+ /** Request to list prompts available on server. */
+ public static final String PROMPTS_LIST = "prompts/list";
+
+ /** Request to get a prompt. */
+ public static final String PROMPTS_GET = "prompts/get";
+
+ /** Notification indicating that the list of prompts has changed. */
+ public static final String NOTIFICATIONS_PROMPTS_LIST_CHANGED =
+ "notifications/prompts/list_changed";
+
+ /** Request to list tools available on server. */
+ public static final String TOOLS_LIST = "tools/list";
+
+ /** Request to call a tool. */
+ public static final String TOOLS_CALL = "tools/call";
+
+ /** Notification indicating that the list of tools has changed. */
+ public static final String NOTIFICATIONS_TOOLS_LIST_CHANGED =
+ "notifications/tools/list_changed";
+
+ /** Request to set the logging level. */
+ public static final String LOGGING_SET_LEVEL = "logging/setLevel";
+
+ /** Notification indicating that a message has been received. */
+ public static final String NOTIFICATIONS_MESSAGE = "notifications/message";
+
+ /** Request to create a sampling message. */
+ public static final String SAMPLING_CREATE_MESSAGE = "sampling/createMessage";
+
+ /** Request to complete a prompt. */
+ public static final String COMPLETION_COMPLETE = "completion/complete";
+
+ /** Request to list roots available on server. */
+ public static final String ROOTS_LIST = "roots/list";
+
+ /** Notification indicating that the list of roots has changed. */
+ public static final String NOTIFICATIONS_ROOTS_LIST_CHANGED =
+ "notifications/roots/list_changed";
+
+ /** Request from the server to elicit additional information from the user via the client */
+ public static final String ELICITATION_CREATE = "elicitation/create";
+
+ private McpMethodNameIncubatingValues() {}
+ }
+
+ private McpIncubatingAttributes() {}
+}
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/OtelIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/OtelIncubatingAttributes.java
index dde3a272..8d5f0cf6 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/OtelIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/OtelIncubatingAttributes.java
@@ -50,6 +50,18 @@ public final class OtelIncubatingAttributes {
*/
public static final AttributeKey OTEL_COMPONENT_TYPE = stringKey("otel.component.type");
+ /**
+ * Identifies the class / type of event.
+ *
+ * Notes:
+ *
+ *
This attribute SHOULD be used by non-OTLP exporters when destination does not support {@code
+ * EventName} or equivalent field. This attribute MAY be used by applications using existing
+ * logging libraries so that it can be used to set the {@code EventName} field by Collector or SDK
+ * components.
+ */
+ public static final AttributeKey OTEL_EVENT_NAME = stringKey("otel.event.name");
+
/**
* Deprecated. Use the {@code otel.scope.name} attribute
*
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PeerIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PeerIncubatingAttributes.java
index a8fb0e43..f80b12a5 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PeerIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PeerIncubatingAttributes.java
@@ -28,8 +28,10 @@ public final class PeerIncubatingAttributes {
* gateway, {@code peer.service="ExternalApiService"} and a backend, {@code
* peer.service="AuthService"}.
*
+ *
+ * @deprecated Replaced by {@code service.peer.name}.
*/
- public static final AttributeKey PEER_SERVICE = stringKey("peer.service");
+ @Deprecated public static final AttributeKey PEER_SERVICE = stringKey("peer.service");
// Enum definitions
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PprofIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PprofIncubatingAttributes.java
index a860c31e..0ddc4669 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PprofIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PprofIncubatingAttributes.java
@@ -7,6 +7,7 @@
import static io.opentelemetry.api.common.AttributeKey.booleanKey;
import static io.opentelemetry.api.common.AttributeKey.stringArrayKey;
+import static io.opentelemetry.api.common.AttributeKey.stringKey;
import io.opentelemetry.api.common.AttributeKey;
import java.util.List;
@@ -47,6 +48,31 @@ public final class PprofIncubatingAttributes {
public static final AttributeKey> PPROF_PROFILE_COMMENT =
stringArrayKey("pprof.profile.comment");
+ /**
+ * Documentation link for this profile type.
+ *
+ * Notes:
+ *
+ *
The URL must be absolute and may be missing if the profile was generated by code that did
+ * not supply a link
+ */
+ public static final AttributeKey PPROF_PROFILE_DOC_URL =
+ stringKey("pprof.profile.doc_url");
+
+ /**
+ * Frames with Function.function_name fully matching the regexp will be dropped from the samples,
+ * along with their successors.
+ */
+ public static final AttributeKey PPROF_PROFILE_DROP_FRAMES =
+ stringKey("pprof.profile.drop_frames");
+
+ /**
+ * Frames with Function.function_name fully matching the regexp will be kept, even if it matches
+ * drop_frames.
+ */
+ public static final AttributeKey PPROF_PROFILE_KEEP_FRAMES =
+ stringKey("pprof.profile.keep_frames");
+
// Enum definitions
private PprofIncubatingAttributes() {}
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RpcIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RpcIncubatingAttributes.java
index ef04acd0..4794265e 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RpcIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RpcIncubatingAttributes.java
@@ -18,105 +18,95 @@
@SuppressWarnings("unused")
public final class RpcIncubatingAttributes {
/**
- * The error codes of the Connect
- * request. Error codes are always string values.
+ * Deprecated, use {@code rpc.response.status_code} attribute instead.
+ *
+ * @deprecated Replaced by {@code rpc.response.status_code}.
*/
+ @Deprecated
public static final AttributeKey RPC_CONNECT_RPC_ERROR_CODE =
stringKey("rpc.connect_rpc.error_code");
/**
- * Connect request metadata, {@code } being the normalized Connect Metadata key (lowercase),
- * the value being the metadata values.
- *
- * Notes:
- *
- *
Instrumentations SHOULD require an explicit configuration of which metadata values are to be
- * captured. Including all request metadata values can be a security risk - explicit configuration
- * helps avoid leaking sensitive information.
+ * Deprecated, use {@code rpc.request.metadata} instead.
*
- *
For example, a property {@code my-custom-key} with value {@code ["1.2.3.4", "1.2.3.5"]}
- * SHOULD be recorded as the {@code rpc.connect_rpc.request.metadata.my-custom-key} attribute with
- * value {@code ["1.2.3.4", "1.2.3.5"]}
+ * @deprecated Replaced by {@code rpc.request.metadata}.
*/
+ @Deprecated
public static final AttributeKeyTemplate> RPC_CONNECT_RPC_REQUEST_METADATA =
stringArrayKeyTemplate("rpc.connect_rpc.request.metadata");
/**
- * Connect response metadata, {@code } being the normalized Connect Metadata key (lowercase),
- * the value being the metadata values.
- *
- * Notes:
- *
- *
Instrumentations SHOULD require an explicit configuration of which metadata values are to be
- * captured. Including all response metadata values can be a security risk - explicit
- * configuration helps avoid leaking sensitive information.
+ * Deprecated, use {@code rpc.response.metadata} instead.
*
- *
For example, a property {@code my-custom-key} with value {@code "attribute_value"} SHOULD be
- * recorded as the {@code rpc.connect_rpc.response.metadata.my-custom-key} attribute with value
- * {@code ["attribute_value"]}
+ * @deprecated Replaced by {@code rpc.response.metadata}.
*/
+ @Deprecated
public static final AttributeKeyTemplate> RPC_CONNECT_RPC_RESPONSE_METADATA =
stringArrayKeyTemplate("rpc.connect_rpc.response.metadata");
/**
- * gRPC request metadata, {@code } being the normalized gRPC Metadata key (lowercase), the
- * value being the metadata values.
- *
- * Notes:
- *
- *
Instrumentations SHOULD require an explicit configuration of which metadata values are to be
- * captured. Including all request metadata values can be a security risk - explicit configuration
- * helps avoid leaking sensitive information.
+ * Deprecated, use {@code rpc.request.metadata} instead.
*
- *
For example, a property {@code my-custom-key} with value {@code ["1.2.3.4", "1.2.3.5"]}
- * SHOULD be recorded as {@code rpc.grpc.request.metadata.my-custom-key} attribute with value
- * {@code ["1.2.3.4", "1.2.3.5"]}
+ * @deprecated Replaced by {@code rpc.request.metadata}.
*/
+ @Deprecated
public static final AttributeKeyTemplate> RPC_GRPC_REQUEST_METADATA =
stringArrayKeyTemplate("rpc.grpc.request.metadata");
/**
- * gRPC response metadata, {@code } being the normalized gRPC Metadata key (lowercase), the
- * value being the metadata values.
- *
- * Notes:
- *
- *
Instrumentations SHOULD require an explicit configuration of which metadata values are to be
- * captured. Including all response metadata values can be a security risk - explicit
- * configuration helps avoid leaking sensitive information.
+ * Deprecated, use {@code rpc.response.metadata} instead.
*
- *
For example, a property {@code my-custom-key} with value {@code ["attribute_value"]} SHOULD
- * be recorded as the {@code rpc.grpc.response.metadata.my-custom-key} attribute with value {@code
- * ["attribute_value"]}
+ * @deprecated Replaced by {@code rpc.response.metadata}.
*/
+ @Deprecated
public static final AttributeKeyTemplate> RPC_GRPC_RESPONSE_METADATA =
stringArrayKeyTemplate("rpc.grpc.response.metadata");
/**
- * The numeric status
- * code of the gRPC request.
+ * Deprecated, use string representation on the {@code rpc.response.status_code} attribute
+ * instead.
+ *
+ * @deprecated Use string representation of the gRPC status code on the {@code
+ * rpc.response.status_code} attribute.
*/
+ @Deprecated
public static final AttributeKey RPC_GRPC_STATUS_CODE = longKey("rpc.grpc.status_code");
- /** {@code error.code} property of response if it is an error response. */
+ /**
+ * Deprecated, use string representation on the {@code rpc.response.status_code} attribute
+ * instead.
+ *
+ * @deprecated Use string representation of the error code on the {@code rpc.response.status_code}
+ * attribute.
+ */
+ @Deprecated
public static final AttributeKey RPC_JSONRPC_ERROR_CODE = longKey("rpc.jsonrpc.error_code");
- /** {@code error.message} property of response if it is an error response. */
+ /**
+ * Deprecated, use span status description or {@code error.message} attribute on other signals.
+ *
+ * @deprecated Use the span status description or {@code error.message} attribute on other
+ * signals.
+ */
+ @Deprecated
public static final AttributeKey RPC_JSONRPC_ERROR_MESSAGE =
stringKey("rpc.jsonrpc.error_message");
/**
- * {@code id} property of request or response. Since protocol allows id to be int, string, {@code
- * null} or missing (for notifications), value is expected to be cast to string for simplicity.
- * Use empty string in case of {@code null} value. Omit entirely if this is a notification.
+ * Deprecated, use {@code jsonrpc.request.id} instead.
+ *
+ * @deprecated Replaced by {@code jsonrpc.request.id}.
*/
+ @Deprecated
public static final AttributeKey RPC_JSONRPC_REQUEST_ID =
stringKey("rpc.jsonrpc.request_id");
/**
- * Protocol version as in {@code jsonrpc} property of request/response. Since JSON-RPC 1.0 doesn't
- * specify this, the value can be omitted.
+ * Deprecated, use {@code jsonrpc.protocol.version} instead.
+ *
+ * @deprecated Replaced by {@code jsonrpc.protocol.version}.
*/
+ @Deprecated
public static final AttributeKey RPC_JSONRPC_VERSION = stringKey("rpc.jsonrpc.version");
/** Compressed size of the message in bytes. */
@@ -140,20 +130,117 @@ public final class RpcIncubatingAttributes {
public static final AttributeKey RPC_MESSAGE_UNCOMPRESSED_SIZE =
longKey("rpc.message.uncompressed_size");
- /** This is the logical name of the method from the RPC interface perspective. */
+ /**
+ * The fully-qualified logical name of the method from the RPC interface perspective.
+ *
+ * Notes:
+ *
+ *
The method name MAY have unbounded cardinality in edge or error cases.
+ *
+ *
Some RPC frameworks or libraries provide a fixed set of recognized methods for client stubs
+ * and server implementations. Instrumentations for such frameworks MUST set this attribute to the
+ * original method name only when the method is recognized by the framework or library.
+ *
+ *
When the method is not recognized, for example, when the server receives a request for a
+ * method that is not predefined on the server, or when instrumentation is not able to reliably
+ * detect if the method is predefined, the attribute MUST be set to {@code _OTHER}. In such cases,
+ * tracing instrumentations MUST also set {@code rpc.method_original} attribute to the original
+ * method value.
+ *
+ *
If the RPC instrumentation could end up converting valid RPC methods to {@code _OTHER}, then
+ * it SHOULD provide a way to configure the list of recognized RPC methods.
+ *
+ *
The {@code rpc.method} can be different from the name of any implementing method/function.
+ * The {@code code.function.name} attribute may be used to record the fully-qualified method
+ * actually executing the call on the server side, or the RPC client stub method on the client
+ * side.
+ */
public static final AttributeKey RPC_METHOD = stringKey("rpc.method");
+ /** The original name of the method used by the client. */
+ public static final AttributeKey RPC_METHOD_ORIGINAL = stringKey("rpc.method_original");
+
+ /**
+ * RPC request metadata, {@code } being the normalized RPC metadata key (lowercase), the
+ * value being the metadata values.
+ *
+ * Notes:
+ *
+ *
Instrumentations SHOULD require an explicit configuration of which metadata values are to be
+ * captured. Including all request metadata values can be a security risk - explicit configuration
+ * helps avoid leaking sensitive information.
+ *
+ *
For example, a property {@code my-custom-key} with value {@code ["1.2.3.4", "1.2.3.5"]}
+ * SHOULD be recorded as {@code rpc.request.metadata.my-custom-key} attribute with value {@code
+ * ["1.2.3.4", "1.2.3.5"]}
+ */
+ public static final AttributeKeyTemplate> RPC_REQUEST_METADATA =
+ stringArrayKeyTemplate("rpc.request.metadata");
+
+ /**
+ * RPC response metadata, {@code } being the normalized RPC metadata key (lowercase), the
+ * value being the metadata values.
+ *
+ * Notes:
+ *
+ *
Instrumentations SHOULD require an explicit configuration of which metadata values are to be
+ * captured. Including all response metadata values can be a security risk - explicit
+ * configuration helps avoid leaking sensitive information.
+ *
+ *
For example, a property {@code my-custom-key} with value {@code ["attribute_value"]} SHOULD
+ * be recorded as the {@code rpc.response.metadata.my-custom-key} attribute with value {@code
+ * ["attribute_value"]}
+ */
+ public static final AttributeKeyTemplate> RPC_RESPONSE_METADATA =
+ stringArrayKeyTemplate("rpc.response.metadata");
+
+ /**
+ * Status code of the RPC returned by the RPC server or generated by the client
+ *
+ * Notes:
+ *
+ *
Usually it represents an error code, but may also represent partial success, warning, or
+ * differentiate between various types of successful outcomes. Semantic conventions for individual
+ * RPC frameworks SHOULD document what {@code rpc.response.status_code} means in the context of
+ * that system and which values are considered to represent errors.
+ */
+ public static final AttributeKey RPC_RESPONSE_STATUS_CODE =
+ stringKey("rpc.response.status_code");
+
/**
- * The full (logical) name of the service being called, including its package name, if applicable.
+ * Deprecated, use fully-qualified {@code rpc.method} instead.
+ *
+ * @deprecated Value should be included in {@code rpc.method} which is expected to be a
+ * fully-qualified name.
*/
- public static final AttributeKey RPC_SERVICE = stringKey("rpc.service");
+ @Deprecated public static final AttributeKey RPC_SERVICE = stringKey("rpc.service");
- /** A string identifying the remoting system. See below for a list of well-known identifiers. */
- public static final AttributeKey RPC_SYSTEM = stringKey("rpc.system");
+ /**
+ * Deprecated, use {@code rpc.system.name} attribute instead.
+ *
+ * @deprecated Replaced by {@code rpc.system.name}.
+ */
+ @Deprecated public static final AttributeKey RPC_SYSTEM = stringKey("rpc.system");
+
+ /**
+ * The Remote Procedure Call (RPC) system.
+ *
+ * Notes:
+ *
+ *
The client and server RPC systems may differ for the same RPC interaction. For example, a
+ * client may use Apache Dubbo or Connect RPC to communicate with a server that uses gRPC since
+ * both protocols provide compatibility with gRPC.
+ */
+ public static final AttributeKey RPC_SYSTEM_NAME = stringKey("rpc.system.name");
// Enum definitions
- /** Values for {@link #RPC_CONNECT_RPC_ERROR_CODE}. */
+ /**
+ * Values for {@link #RPC_CONNECT_RPC_ERROR_CODE}
+ *
+ * @deprecated Replaced by {@code rpc.response.status_code}.
+ */
+ @Deprecated
public static final class RpcConnectRpcErrorCodeIncubatingValues {
/** cancelled. */
public static final String CANCELLED = "cancelled";
@@ -206,7 +293,13 @@ public static final class RpcConnectRpcErrorCodeIncubatingValues {
private RpcConnectRpcErrorCodeIncubatingValues() {}
}
- /** Values for {@link #RPC_GRPC_STATUS_CODE}. */
+ /**
+ * Values for {@link #RPC_GRPC_STATUS_CODE}
+ *
+ * @deprecated Use string representation of the gRPC status code on the {@code
+ * rpc.response.status_code} attribute.
+ */
+ @Deprecated
public static final class RpcGrpcStatusCodeIncubatingValues {
/** OK */
public static final long OK = 0;
@@ -273,7 +366,12 @@ public static final class RpcMessageTypeIncubatingValues {
private RpcMessageTypeIncubatingValues() {}
}
- /** Values for {@link #RPC_SYSTEM}. */
+ /**
+ * Values for {@link #RPC_SYSTEM}
+ *
+ * @deprecated Replaced by {@code rpc.system.name}.
+ */
+ @Deprecated
public static final class RpcSystemIncubatingValues {
/** gRPC */
public static final String GRPC = "grpc";
@@ -299,5 +397,22 @@ public static final class RpcSystemIncubatingValues {
private RpcSystemIncubatingValues() {}
}
+ /** Values for {@link #RPC_SYSTEM_NAME}. */
+ public static final class RpcSystemNameIncubatingValues {
+ /** gRPC */
+ public static final String GRPC = "grpc";
+
+ /** Apache Dubbo */
+ public static final String DUBBO = "dubbo";
+
+ /** Connect RPC */
+ public static final String CONNECTRPC = "connectrpc";
+
+ /** JSON-RPC */
+ public static final String JSONRPC = "jsonrpc";
+
+ private RpcSystemNameIncubatingValues() {}
+ }
+
private RpcIncubatingAttributes() {}
}
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServiceIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServiceIncubatingAttributes.java
index d5b9c015..e33649e6 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServiceIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServiceIncubatingAttributes.java
@@ -81,8 +81,22 @@ public final class ServiceIncubatingAttributes {
public static final AttributeKey SERVICE_NAMESPACE = stringKey("service.namespace");
/**
- * The version string of the service API or implementation. The format is not defined by these
- * conventions.
+ * Logical name of the service on the other side of the connection. SHOULD be equal to the actual
+ * {@code service.name} resource attribute of the
+ * remote service if any.
+ */
+ public static final AttributeKey SERVICE_PEER_NAME = stringKey("service.peer.name");
+
+ /**
+ * Logical namespace of the service on the other side of the connection. SHOULD be equal to the
+ * actual {@code service.namespace} resource
+ * attribute of the remote service if any.
+ */
+ public static final AttributeKey SERVICE_PEER_NAMESPACE =
+ stringKey("service.peer.namespace");
+
+ /**
+ * The version string of the service component. The format is not defined by these conventions.
*
* @deprecated deprecated in favor of stable {@link
* io.opentelemetry.semconv.ServiceAttributes#SERVICE_VERSION} attribute.
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SystemIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SystemIncubatingAttributes.java
index 322c12e5..d1d7195e 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SystemIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/SystemIncubatingAttributes.java
@@ -50,6 +50,10 @@ public final class SystemIncubatingAttributes {
public static final AttributeKey SYSTEM_FILESYSTEM_TYPE =
stringKey("system.filesystem.type");
+ /** The Linux Slab memory state */
+ public static final AttributeKey SYSTEM_MEMORY_LINUX_SLAB_STATE =
+ stringKey("system.memory.linux.slab.state");
+
/** The memory state */
public static final AttributeKey SYSTEM_MEMORY_STATE = stringKey("system.memory.state");
@@ -168,6 +172,17 @@ public static final class SystemFilesystemTypeIncubatingValues {
private SystemFilesystemTypeIncubatingValues() {}
}
+ /** Values for {@link #SYSTEM_MEMORY_LINUX_SLAB_STATE}. */
+ public static final class SystemMemoryLinuxSlabStateIncubatingValues {
+ /** reclaimable. */
+ public static final String RECLAIMABLE = "reclaimable";
+
+ /** unreclaimable. */
+ public static final String UNRECLAIMABLE = "unreclaimable";
+
+ private SystemMemoryLinuxSlabStateIncubatingValues() {}
+ }
+
/** Values for {@link #SYSTEM_MEMORY_STATE}. */
public static final class SystemMemoryStateIncubatingValues {
/** Actual used virtual memory in bytes. */
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/UserAgentIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/UserAgentIncubatingAttributes.java
index aa21c7cd..3a419ad3 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/UserAgentIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/UserAgentIncubatingAttributes.java
@@ -18,7 +18,7 @@ public final class UserAgentIncubatingAttributes {
*
* Notes:
*
- *
Example of extracting browser's name from original
+ *
Example of extracting browser's name from original
* string. In the case of using a user-agent for non-browser products, such as microservices with
* multiple names/versions inside the {@code user_agent.original}, the most significant name
* SHOULD be selected. In such a scenario it should align with {@code user_agent.version}
@@ -77,7 +77,7 @@ public final class UserAgentIncubatingAttributes {
*
*
Notes:
*
- *
Example of extracting browser's version from
+ *
Example of extracting browser's version from
* original string. In the case of using a user-agent for non-browser products, such as
* microservices with multiple names/versions inside the {@code user_agent.original}, the most
* significant version SHOULD be selected. In such a scenario it should align with {@code
diff --git a/semconv/src/main/java/io/opentelemetry/semconv/DbAttributes.java b/semconv/src/main/java/io/opentelemetry/semconv/DbAttributes.java
index e90afcc9..b029d72f 100644
--- a/semconv/src/main/java/io/opentelemetry/semconv/DbAttributes.java
+++ b/semconv/src/main/java/io/opentelemetry/semconv/DbAttributes.java
@@ -87,7 +87,7 @@ public final class DbAttributes {
*
Summary may be available to the instrumentation through instrumentation hooks or other
* means. If it is not available, instrumentations that support query parsing SHOULD generate a
* summary following Generating query
+ * href="/docs/db/database-spans.md#generating-a-summary-of-the-query">Generating query
* summary section.
*/
public static final AttributeKey DB_QUERY_SUMMARY = stringKey("db.query.summary");
@@ -98,7 +98,7 @@ public final class DbAttributes {
* Notes:
*
*
For sanitization see Sanitization of {@code
+ * href="/docs/db/database-spans.md#sanitization-of-dbquerytext">Sanitization of {@code
* db.query.text}. For batch operations, if the individual operations are known to have the
* same query text then that query text SHOULD be used, otherwise all of the individual query
* texts SHOULD be concatenated with separator {@code ; } or some other database system specific
diff --git a/semconv/src/main/java/io/opentelemetry/semconv/ErrorAttributes.java b/semconv/src/main/java/io/opentelemetry/semconv/ErrorAttributes.java
index 07f5de28..80b4cae1 100644
--- a/semconv/src/main/java/io/opentelemetry/semconv/ErrorAttributes.java
+++ b/semconv/src/main/java/io/opentelemetry/semconv/ErrorAttributes.java
@@ -33,7 +33,7 @@ public final class ErrorAttributes {
*
If the operation has completed successfully, instrumentations SHOULD NOT set {@code
* error.type}.
*
- *
If a specific domain defines its own set of error identifiers (such as HTTP or gRPC status
+ *
If a specific domain defines its own set of error identifiers (such as HTTP or RPC status
* codes), it's RECOMMENDED to:
*
*
diff --git a/semconv/src/main/java/io/opentelemetry/semconv/SchemaUrls.java b/semconv/src/main/java/io/opentelemetry/semconv/SchemaUrls.java
index ff88cc9b..0b09b712 100644
--- a/semconv/src/main/java/io/opentelemetry/semconv/SchemaUrls.java
+++ b/semconv/src/main/java/io/opentelemetry/semconv/SchemaUrls.java
@@ -7,6 +7,7 @@
public final class SchemaUrls {
+ public static final String V1_39_0 = "https://opentelemetry.io/schemas/1.39.0";
public static final String V1_38_0 = "https://opentelemetry.io/schemas/1.38.0";
public static final String V1_37_0 = "https://opentelemetry.io/schemas/1.37.0";
public static final String V1_36_0 = "https://opentelemetry.io/schemas/1.36.0";
diff --git a/semconv/src/main/java/io/opentelemetry/semconv/ServiceAttributes.java b/semconv/src/main/java/io/opentelemetry/semconv/ServiceAttributes.java
index 16bf1140..471f5248 100644
--- a/semconv/src/main/java/io/opentelemetry/semconv/ServiceAttributes.java
+++ b/semconv/src/main/java/io/opentelemetry/semconv/ServiceAttributes.java
@@ -27,8 +27,7 @@ public final class ServiceAttributes {
public static final AttributeKey SERVICE_NAME = stringKey("service.name");
/**
- * The version string of the service API or implementation. The format is not defined by these
- * conventions.
+ * The version string of the service component. The format is not defined by these conventions.
*/
public static final AttributeKey SERVICE_VERSION = stringKey("service.version");
From a3a3e62a58448c49765251184278e1c145d76aeb Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 28 Jan 2026 03:13:25 +0000
Subject: [PATCH 3/5] Fix @Deprecated annotation formatting for consistency
Co-authored-by: trask <218610+trask@users.noreply.github.com>
---
.../semconv/incubating/PeerIncubatingAttributes.java | 3 ++-
.../semconv/incubating/RpcIncubatingAttributes.java | 6 ++++--
.../semconv/incubating/ServiceIncubatingAttributes.java | 3 ++-
3 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PeerIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PeerIncubatingAttributes.java
index f80b12a5..05178fb5 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PeerIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PeerIncubatingAttributes.java
@@ -31,7 +31,8 @@ public final class PeerIncubatingAttributes {
*
* @deprecated Replaced by {@code service.peer.name}.
*/
- @Deprecated public static final AttributeKey PEER_SERVICE = stringKey("peer.service");
+ @Deprecated
+ public static final AttributeKey PEER_SERVICE = stringKey("peer.service");
// Enum definitions
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RpcIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RpcIncubatingAttributes.java
index 4794265e..d89c77ed 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RpcIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RpcIncubatingAttributes.java
@@ -213,14 +213,16 @@ public final class RpcIncubatingAttributes {
* @deprecated Value should be included in {@code rpc.method} which is expected to be a
* fully-qualified name.
*/
- @Deprecated public static final AttributeKey RPC_SERVICE = stringKey("rpc.service");
+ @Deprecated
+ public static final AttributeKey RPC_SERVICE = stringKey("rpc.service");
/**
* Deprecated, use {@code rpc.system.name} attribute instead.
*
* @deprecated Replaced by {@code rpc.system.name}.
*/
- @Deprecated public static final AttributeKey RPC_SYSTEM = stringKey("rpc.system");
+ @Deprecated
+ public static final AttributeKey RPC_SYSTEM = stringKey("rpc.system");
/**
* The Remote Procedure Call (RPC) system.
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServiceIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServiceIncubatingAttributes.java
index e33649e6..a22871b8 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServiceIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServiceIncubatingAttributes.java
@@ -64,7 +64,8 @@ public final class ServiceIncubatingAttributes {
* @deprecated deprecated in favor of stable {@link
* io.opentelemetry.semconv.ServiceAttributes#SERVICE_NAME} attribute.
*/
- @Deprecated public static final AttributeKey SERVICE_NAME = stringKey("service.name");
+ @Deprecated
+ public static final AttributeKey SERVICE_NAME = stringKey("service.name");
/**
* A namespace for {@code service.name}.
From 056160e1286de432d38b82e4eb74b3e4845cd3e9 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 28 Jan 2026 03:27:20 +0000
Subject: [PATCH 4/5] Apply spotless formatting
Co-authored-by: trask <218610+trask@users.noreply.github.com>
---
.../semconv/incubating/PeerIncubatingAttributes.java | 3 +--
.../semconv/incubating/RpcIncubatingAttributes.java | 6 ++----
.../semconv/incubating/ServiceIncubatingAttributes.java | 3 +--
3 files changed, 4 insertions(+), 8 deletions(-)
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PeerIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PeerIncubatingAttributes.java
index 05178fb5..f80b12a5 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PeerIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/PeerIncubatingAttributes.java
@@ -31,8 +31,7 @@ public final class PeerIncubatingAttributes {
*
* @deprecated Replaced by {@code service.peer.name}.
*/
- @Deprecated
- public static final AttributeKey PEER_SERVICE = stringKey("peer.service");
+ @Deprecated public static final AttributeKey PEER_SERVICE = stringKey("peer.service");
// Enum definitions
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RpcIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RpcIncubatingAttributes.java
index d89c77ed..4794265e 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RpcIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/RpcIncubatingAttributes.java
@@ -213,16 +213,14 @@ public final class RpcIncubatingAttributes {
* @deprecated Value should be included in {@code rpc.method} which is expected to be a
* fully-qualified name.
*/
- @Deprecated
- public static final AttributeKey RPC_SERVICE = stringKey("rpc.service");
+ @Deprecated public static final AttributeKey RPC_SERVICE = stringKey("rpc.service");
/**
* Deprecated, use {@code rpc.system.name} attribute instead.
*
* @deprecated Replaced by {@code rpc.system.name}.
*/
- @Deprecated
- public static final AttributeKey RPC_SYSTEM = stringKey("rpc.system");
+ @Deprecated public static final AttributeKey RPC_SYSTEM = stringKey("rpc.system");
/**
* The Remote Procedure Call (RPC) system.
diff --git a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServiceIncubatingAttributes.java b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServiceIncubatingAttributes.java
index a22871b8..e33649e6 100644
--- a/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServiceIncubatingAttributes.java
+++ b/semconv-incubating/src/main/java/io/opentelemetry/semconv/incubating/ServiceIncubatingAttributes.java
@@ -64,8 +64,7 @@ public final class ServiceIncubatingAttributes {
* @deprecated deprecated in favor of stable {@link
* io.opentelemetry.semconv.ServiceAttributes#SERVICE_NAME} attribute.
*/
- @Deprecated
- public static final AttributeKey SERVICE_NAME = stringKey("service.name");
+ @Deprecated public static final AttributeKey SERVICE_NAME = stringKey("service.name");
/**
* A namespace for {@code service.name}.
From d3397fa9a06aa5031a9ece13a3f5198f4d136518 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 28 Jan 2026 03:40:44 +0000
Subject: [PATCH 5/5] Co-authored-by: trask
<218610+trask@users.noreply.github.com>
---
docs/apidiffs/current_vs_latest/opentelemetry-semconv.txt | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/docs/apidiffs/current_vs_latest/opentelemetry-semconv.txt b/docs/apidiffs/current_vs_latest/opentelemetry-semconv.txt
index da6b0895..f9df3b7f 100644
--- a/docs/apidiffs/current_vs_latest/opentelemetry-semconv.txt
+++ b/docs/apidiffs/current_vs_latest/opentelemetry-semconv.txt
@@ -1,2 +1,4 @@
-Comparing source compatibility of opentelemetry-semconv-1.38.0-SNAPSHOT.jar against opentelemetry-semconv-1.38.0.jar
-No changes.
\ No newline at end of file
+Comparing source compatibility of opentelemetry-semconv-1.39.0-SNAPSHOT.jar against opentelemetry-semconv-1.38.0.jar
+*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.semconv.SchemaUrls (not serializable)
+ === CLASS FILE FORMAT VERSION: 52.0 <- 52.0
+ +++ NEW FIELD: PUBLIC(+) STATIC(+) FINAL(+) java.lang.String V1_39_0