Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,16 @@

- Android: Count deep sleep in breadcrumb, screenshot and view hierarchy debounce windows, so the first low-memory or battery breadcrumb after a long Doze is no longer dropped ([#6590](https://github.com/getsentry/sentry-java/pull/6590))

### Dependencies

- Bump OpenTelemetry ([#6602](https://github.com/getsentry/sentry-java/pull/6602))
- OpenTelemetry to 1.67.0 (was 1.63.0)
- OpenTelemetry Instrumentation to 2.33.1 (was 2.29.0)
- OpenTelemetry Instrumentation Alpha to 2.33.1-alpha (was 2.29.0-alpha)
- OpenTelemetry Semantic Conventions to 1.44.0 (was 1.42.0)
- OpenTelemetry Semantic Conventions Alpha to 1.44.0-alpha (was 1.42.0-alpha)
- OpenTelemetry 1.67 creates no-op spans when no `SpanProcessor` is configured. If you construct the OpenTelemetry SDK manually while using `sentry-opentelemetry-otlp` classes directly, configure a span processor. Without one, Sentry cannot inspect outgoing request URLs and may inject `sentry-trace` and `baggage` headers into destinations excluded by `tracePropagationTargets`. Standard OTLP exporter, Sentry Java agent, and agentless setups already configure one.

## 8.64.0

### Breaking Changes
Expand Down
12 changes: 6 additions & 6 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,13 @@ nopen = "1.0.1"
# see https://developer.android.com/jetpack/androidx/releases/compose-kotlin
okhttp = "5.5.1"
openfeature = "1.18.2"
otel = "1.63.0"
otelAlpha = "1.63.0-alpha"
otelInstrumentation = "2.29.0"
otelInstrumentationAlpha = "2.29.0-alpha"
otel = "1.67.0"
otelAlpha = "1.67.0-alpha"
otelInstrumentation = "2.33.1"
otelInstrumentationAlpha = "2.33.1-alpha"
# check https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/dependencyManagement/build.gradle.kts#L49 for release version above to find a compatible version
otelSemanticConventions = "1.42.0"
otelSemanticConventionsAlpha = "1.42.0-alpha"
otelSemanticConventions = "1.44.0"
otelSemanticConventionsAlpha = "1.44.0-alpha"
retrofit = "3.0.0"
room2 = "2.8.5"
room3 = "3.0.0-rc01"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ import io.opentelemetry.api.trace.TraceFlags
import io.opentelemetry.api.trace.TraceState
import io.opentelemetry.context.Context
import io.opentelemetry.sdk.trace.SdkTracerProvider
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor
import io.opentelemetry.sdk.trace.export.SpanExporter
import io.opentelemetry.sdk.trace.samplers.Sampler
import io.opentelemetry.sdk.trace.samplers.SamplingDecision
import io.sentry.DataCategory
Expand Down Expand Up @@ -138,18 +140,24 @@ class SentrySamplerTest {
verify(onDiscard).execute(DiscardReason.CALLBACK_ERROR, DataCategory.Span, 1)
verifyNoMoreInteractions(onDiscard)
val recordingSampler = mock<Sampler>(defaultAnswer = delegatesTo(sampler))
SdkTracerProvider.builder().setSampler(recordingSampler).build().use { provider ->
val openTelemetry =
mock<OpenTelemetry>().also {
whenever(it.tracerProvider).thenReturn(provider)
}
OtelSpanFactory(openTelemetry).createTransaction(context, scopes, TransactionOptions(), null)
val attributes = argumentCaptor<Attributes>()
verify(recordingSampler).shouldSample(any(), any(), any(), any(), attributes.capture(), any())
val restored = OtelSamplingUtil.extractSamplingDecision(attributes.firstValue)!!
assertThat(restored.sampled).isFalse()
assertThat(restored.profileSampled).isFalse()
}
SdkTracerProvider.builder()
.setSampler(recordingSampler)
.addSpanProcessor(SimpleSpanProcessor.create(SpanExporter.composite()))
.build()
.use { provider ->
val openTelemetry =
mock<OpenTelemetry>().also {
whenever(it.tracerProvider).thenReturn(provider)
}
OtelSpanFactory(openTelemetry)
.createTransaction(context, scopes, TransactionOptions(), null)
val attributes = argumentCaptor<Attributes>()
verify(recordingSampler)
.shouldSample(any(), any(), any(), any(), attributes.capture(), any())
val restored = OtelSamplingUtil.extractSamplingDecision(attributes.firstValue)!!
assertThat(restored.sampled).isFalse()
assertThat(restored.profileSampled).isFalse()
}

verifyNoMoreInteractions(onDiscard)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import io.opentelemetry.context.Context
import io.opentelemetry.context.propagation.TextMapGetter
import io.opentelemetry.context.propagation.TextMapSetter
import io.opentelemetry.sdk.trace.SdkTracerProvider
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor
import io.opentelemetry.sdk.trace.export.SpanExporter
import io.sentry.Baggage
import io.sentry.Sentry
import kotlin.test.AfterTest
Expand Down Expand Up @@ -180,7 +182,10 @@ class OpenTelemetryOtlpPropagatorTest {
}
val propagator = OpenTelemetryOtlpPropagator()
val carrier = mutableMapOf<String, String>()
val tracerProvider = SdkTracerProvider.builder().build()
val tracerProvider =
SdkTracerProvider.builder()
.addSpanProcessor(SimpleSpanProcessor.create(SpanExporter.composite()))
.build()
val otelSpan =
tracerProvider
.get("test")
Expand Down Expand Up @@ -220,7 +225,10 @@ class OpenTelemetryOtlpPropagatorTest {
}
val propagator = OpenTelemetryOtlpPropagator()
val carrier = mutableMapOf<String, String>()
val tracerProvider = SdkTracerProvider.builder().build()
val tracerProvider =
SdkTracerProvider.builder()
.addSpanProcessor(SimpleSpanProcessor.create(SpanExporter.composite()))
.build()
val otelSpan =
tracerProvider
.get("test")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ package io.sentry.opentelemetry.otlp
import com.google.common.truth.Truth.assertThat
import io.opentelemetry.sdk.OpenTelemetrySdk
import io.opentelemetry.sdk.trace.SdkTracerProvider
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor
import io.opentelemetry.sdk.trace.export.SpanExporter
import io.sentry.Sentry
import io.sentry.test.MockSentryServer
import io.sentry.test.event
Expand All @@ -20,7 +22,13 @@ import kotlin.test.Test
class OtlpEndToEndTest {
private val server = MockSentryServer()
private val openTelemetry =
OpenTelemetrySdk.builder().setTracerProvider(SdkTracerProvider.builder().build()).build()
OpenTelemetrySdk.builder()
.setTracerProvider(
SdkTracerProvider.builder()
.addSpanProcessor(SimpleSpanProcessor.create(SpanExporter.composite()))
.build()
)
.build()

@AfterTest
fun teardown() {
Expand Down
Loading