diff --git a/CHANGELOG.md b/CHANGELOG.md index 295f7d46508..6319b17d5f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ - Manually constructed `SentryTimberIntegration` and `SentryTimberTree` instances require a `logsEnabled` argument. Pass `false` to keep Sentry Logs disabled. - Remove the Apache HttpClient transport and stop publishing `sentry-apache-http-client-5` ([#6214](https://github.com/getsentry/sentry-java/pull/6214)) +- Remove the deprecated `Instrumenter` enum, option, span context property, and `startChild` overloads ([#6252](https://github.com/getsentry/sentry-java/pull/6252)) ### Features diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/ActivityLifecycleIntegration.java b/sentry-android-core/src/main/java/io/sentry/android/core/ActivityLifecycleIntegration.java index 505bb84ea2c..6c0a629d084 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/ActivityLifecycleIntegration.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/ActivityLifecycleIntegration.java @@ -17,7 +17,6 @@ import io.sentry.ISentryLifecycleToken; import io.sentry.ISpan; import io.sentry.ITransaction; -import io.sentry.Instrumenter; import io.sentry.Integration; import io.sentry.NoOpTransaction; import io.sentry.PropagationContext; @@ -361,34 +360,22 @@ private void startTracing(final @NotNull Activity activity) { if (isAppStart) { if (!createStandaloneAppStart && !options.isEnableStandaloneAppStartTracing()) { + spanOptions.setStartTimestamp(appStartTime); appStartSpan = transaction.startChild( - getAppStartOp(coldStart), - getAppStartDesc(coldStart), - appStartTime, - Instrumenter.SENTRY, - spanOptions); + getAppStartOp(coldStart), getAppStartDesc(coldStart), spanOptions); finishAppStartSpan(); } } + spanOptions.setStartTimestamp(ttidStartTime); final @NotNull ISpan ttidSpan = - transaction.startChild( - TTID_OP, - getTtidDesc(activityName), - ttidStartTime, - Instrumenter.SENTRY, - spanOptions); + transaction.startChild(TTID_OP, getTtidDesc(activityName), spanOptions); ttidSpanMap.put(activity, ttidSpan); if (timeToFullDisplaySpanEnabled && fullyDisplayedReporter != null && options != null) { final @NotNull ISpan ttfdSpan = - transaction.startChild( - TTFD_OP, - getTtfdDesc(activityName), - ttidStartTime, - Instrumenter.SENTRY, - spanOptions); + transaction.startChild(TTFD_OP, getTtfdDesc(activityName), spanOptions); try { ttfdSpanMap.put(activity, ttfdSpan); ttfdAutoCloseFuture = @@ -1125,13 +1112,9 @@ private void onHeadlessAppStart() { final SpanOptions spanOptions = new SpanOptions(); setSpanOrigin(spanOptions); + spanOptions.setStartTimestamp(AndroidDateUtils.getCurrentSentryDateTime()); final @NotNull ISpan extendedSpan = - transaction.startChild( - APP_START_EXTENDED_OP, - APP_START_EXTENDED_DESC, - AndroidDateUtils.getCurrentSentryDateTime(), - Instrumenter.SENTRY, - spanOptions); + transaction.startChild(APP_START_EXTENDED_OP, APP_START_EXTENDED_DESC, spanOptions); return new AppStartExtension.ExtendedAppStart(transaction, extendedSpan); } diff --git a/sentry-android-core/src/main/java/io/sentry/android/core/performance/ActivityLifecycleSpanHelper.java b/sentry-android-core/src/main/java/io/sentry/android/core/performance/ActivityLifecycleSpanHelper.java index accb56db0dc..61ee186bc99 100644 --- a/sentry-android-core/src/main/java/io/sentry/android/core/performance/ActivityLifecycleSpanHelper.java +++ b/sentry-android-core/src/main/java/io/sentry/android/core/performance/ActivityLifecycleSpanHelper.java @@ -3,7 +3,6 @@ import android.os.Looper; import android.os.SystemClock; import io.sentry.ISpan; -import io.sentry.Instrumenter; import io.sentry.SentryDate; import io.sentry.SpanDataConvention; import io.sentry.SpanStatus; @@ -111,8 +110,7 @@ public void saveSpanToAppStartMetrics() { final @NotNull String description, final @NotNull SentryDate startTimestamp) { final @NotNull ISpan span = - parentSpan.startChild( - APP_METRICS_ACTIVITIES_OP, description, startTimestamp, Instrumenter.SENTRY); + parentSpan.startChild(APP_METRICS_ACTIVITIES_OP, description, startTimestamp); setDefaultStartSpanData(span); return span; } diff --git a/sentry-android-sqlite/src/main/java/io/sentry/android/sqlite/OpenHelperSpans.kt b/sentry-android-sqlite/src/main/java/io/sentry/android/sqlite/OpenHelperSpans.kt index 059eb1bb1b5..4aa08a6f261 100644 --- a/sentry-android-sqlite/src/main/java/io/sentry/android/sqlite/OpenHelperSpans.kt +++ b/sentry-android-sqlite/src/main/java/io/sentry/android/sqlite/OpenHelperSpans.kt @@ -4,7 +4,6 @@ import android.database.CrossProcessCursor import android.database.SQLException import io.sentry.IScopes import io.sentry.ISpan -import io.sentry.Instrumenter import io.sentry.ScopesAdapter import io.sentry.SentryIntegrationPackageStorage import io.sentry.SentryStackTraceFactory @@ -46,12 +45,12 @@ internal class OpenHelperSpans( if (result is CrossProcessCursor) { return SentryCrossProcessCursor(result, this, sql) as T } - span = scopes.span?.startChild("db.sql.query", sql, startTimestamp, Instrumenter.SENTRY) + span = scopes.span?.startChild("db.sql.query", sql, startTimestamp) span?.spanContext?.origin = TRACE_ORIGIN span?.status = SpanStatus.OK result } catch (e: Throwable) { - span = scopes.span?.startChild("db.sql.query", sql, startTimestamp, Instrumenter.SENTRY) + span = scopes.span?.startChild("db.sql.query", sql, startTimestamp) span?.spanContext?.origin = TRACE_ORIGIN span?.status = SpanStatus.INTERNAL_ERROR span?.throwable = e diff --git a/sentry-android-sqlite/src/main/java/io/sentry/sqlite/DriverSpans.kt b/sentry-android-sqlite/src/main/java/io/sentry/sqlite/DriverSpans.kt index b3c0eb7c713..018cee2742e 100644 --- a/sentry-android-sqlite/src/main/java/io/sentry/sqlite/DriverSpans.kt +++ b/sentry-android-sqlite/src/main/java/io/sentry/sqlite/DriverSpans.kt @@ -2,7 +2,6 @@ package io.sentry.sqlite import io.sentry.IScopes import io.sentry.ISpan -import io.sentry.Instrumenter import io.sentry.ScopesAdapter import io.sentry.SentryDate import io.sentry.SentryLongDate @@ -50,7 +49,7 @@ internal class DriverSpans(private val scopes: IScopes, private val dbMetadata: val startTimestamp = SentryLongDate(startTimestampNanos) val endTimestamp = SentryLongDate(startTimestampNanos + durationNanos) - parent.startChild("db.sql.query", sql, startTimestamp, Instrumenter.SENTRY).apply { + parent.startChild("db.sql.query", sql, startTimestamp).apply { spanContext.origin = SQLITE_TRACE_ORIGIN throwable?.let { this.throwable = it } diff --git a/sentry-compose/src/androidMain/kotlin/io/sentry/compose/SentryComposeTracing.kt b/sentry-compose/src/androidMain/kotlin/io/sentry/compose/SentryComposeTracing.kt index a5e7a84ce6e..59749084cba 100644 --- a/sentry-compose/src/androidMain/kotlin/io/sentry/compose/SentryComposeTracing.kt +++ b/sentry-compose/src/androidMain/kotlin/io/sentry/compose/SentryComposeTracing.kt @@ -9,7 +9,6 @@ import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.draw.drawWithContent import io.sentry.ISpan -import io.sentry.Instrumenter import io.sentry.Sentry import io.sentry.SentryDate import io.sentry.SpanOptions @@ -128,9 +127,10 @@ private fun recordCompositionSpan( .startChild( OP_COMPOSITION_SPAN, tag, - startTimestamp, - Instrumenter.SENTRY, - SpanOptions().apply { origin = OP_TRACE_ORIGIN }, + SpanOptions().apply { + origin = OP_TRACE_ORIGIN + this.startTimestamp = startTimestamp + }, ) .run { finish(null, endTimestamp) } } @@ -153,9 +153,10 @@ private fun recordRenderSpan( .startChild( OP_RENDER_SPAN, tag, - startTimestamp, - Instrumenter.SENTRY, - SpanOptions().apply { origin = OP_TRACE_ORIGIN }, + SpanOptions().apply { + origin = OP_TRACE_ORIGIN + this.startTimestamp = startTimestamp + }, ) .run { finish(null, endTimestamp) } } @@ -243,10 +244,9 @@ private class BucketSpans { ownerSpan.startChild( operation, description, - startTimestamp, - Instrumenter.SENTRY, SpanOptions().apply { origin = OP_TRACE_ORIGIN + this.startTimestamp = startTimestamp isTrimStart = true isTrimEnd = true isIdle = true diff --git a/sentry-opentelemetry/sentry-opentelemetry-bootstrap/api/sentry-opentelemetry-bootstrap.api b/sentry-opentelemetry/sentry-opentelemetry-bootstrap/api/sentry-opentelemetry-bootstrap.api index 1f81e4324d4..f9b2c24938f 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-bootstrap/api/sentry-opentelemetry-bootstrap.api +++ b/sentry-opentelemetry/sentry-opentelemetry-bootstrap/api/sentry-opentelemetry-bootstrap.api @@ -86,8 +86,6 @@ public final class io/sentry/opentelemetry/OtelStrongRefSpanWrapper : io/sentry/ public fun startChild (Ljava/lang/String;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;)Lio/sentry/ISpan; - public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;)Lio/sentry/ISpan; - public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; public fun storeInContext (Lio/opentelemetry/context/Context;)Lio/opentelemetry/context/Context; public fun toBaggageHeader (Ljava/util/List;)Lio/sentry/BaggageHeader; @@ -141,8 +139,6 @@ public final class io/sentry/opentelemetry/OtelTransactionSpanForwarder : io/sen public fun startChild (Ljava/lang/String;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;)Lio/sentry/ISpan; - public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;)Lio/sentry/ISpan; - public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; public fun toBaggageHeader (Ljava/util/List;)Lio/sentry/BaggageHeader; public fun toSentryTrace ()Lio/sentry/SentryTraceHeader; diff --git a/sentry-opentelemetry/sentry-opentelemetry-bootstrap/src/main/java/io/sentry/opentelemetry/OtelStrongRefSpanWrapper.java b/sentry-opentelemetry/sentry-opentelemetry-bootstrap/src/main/java/io/sentry/opentelemetry/OtelStrongRefSpanWrapper.java index 907d71a278b..15b35c33f33 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-bootstrap/src/main/java/io/sentry/opentelemetry/OtelStrongRefSpanWrapper.java +++ b/sentry-opentelemetry/sentry-opentelemetry-bootstrap/src/main/java/io/sentry/opentelemetry/OtelStrongRefSpanWrapper.java @@ -7,7 +7,6 @@ import io.sentry.IScopes; import io.sentry.ISentryLifecycleToken; import io.sentry.ISpan; -import io.sentry.Instrumenter; import io.sentry.MeasurementUnit; import io.sentry.SentryDate; import io.sentry.SentryTraceHeader; @@ -131,25 +130,6 @@ public void setTransactionName(@NotNull String name, @NotNull TransactionNameSou return delegate.startChild(operation, description, timestamp); } - @Override - public @NotNull ISpan startChild( - @NotNull String operation, - @Nullable String description, - @Nullable SentryDate timestamp, - @NotNull Instrumenter instrumenter) { - return delegate.startChild(operation, description, timestamp, instrumenter); - } - - @Override - public @NotNull ISpan startChild( - @NotNull String operation, - @Nullable String description, - @Nullable SentryDate timestamp, - @NotNull Instrumenter instrumenter, - @NotNull SpanOptions spanOptions) { - return delegate.startChild(operation, description, timestamp, instrumenter, spanOptions); - } - @Override public @NotNull ISpan startChild(@NotNull String operation, @Nullable String description) { return delegate.startChild(operation, description); diff --git a/sentry-opentelemetry/sentry-opentelemetry-bootstrap/src/main/java/io/sentry/opentelemetry/OtelTransactionSpanForwarder.java b/sentry-opentelemetry/sentry-opentelemetry-bootstrap/src/main/java/io/sentry/opentelemetry/OtelTransactionSpanForwarder.java index e3cdfc4be3b..ff7674d0311 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-bootstrap/src/main/java/io/sentry/opentelemetry/OtelTransactionSpanForwarder.java +++ b/sentry-opentelemetry/sentry-opentelemetry-bootstrap/src/main/java/io/sentry/opentelemetry/OtelTransactionSpanForwarder.java @@ -7,7 +7,6 @@ import io.sentry.ISentryLifecycleToken; import io.sentry.ISpan; import io.sentry.ITransaction; -import io.sentry.Instrumenter; import io.sentry.MeasurementUnit; import io.sentry.SentryDate; import io.sentry.SentryTraceHeader; @@ -52,25 +51,6 @@ public OtelTransactionSpanForwarder(final @NotNull IOtelSpanWrapper rootSpan) { return rootSpan.startChild(spanContext, spanOptions); } - @Override - public @NotNull ISpan startChild( - @NotNull String operation, - @Nullable String description, - @Nullable SentryDate timestamp, - @NotNull Instrumenter instrumenter) { - return rootSpan.startChild(operation, description, timestamp, instrumenter); - } - - @Override - public @NotNull ISpan startChild( - @NotNull String operation, - @Nullable String description, - @Nullable SentryDate timestamp, - @NotNull Instrumenter instrumenter, - @NotNull SpanOptions spanOptions) { - return rootSpan.startChild(operation, description, timestamp, instrumenter, spanOptions); - } - @Override public @NotNull ISpan startChild(@NotNull String operation, @Nullable String description) { return rootSpan.startChild(operation, description); @@ -224,7 +204,7 @@ public boolean isNoOp() { @Override public @NotNull ISpan startChild( @NotNull String operation, @Nullable String description, @Nullable SentryDate timestamp) { - return rootSpan.startChild(operation, description, timestamp, Instrumenter.SENTRY); + return rootSpan.startChild(operation, description, timestamp); } @Override diff --git a/sentry-opentelemetry/sentry-opentelemetry-core/api/sentry-opentelemetry-core.api b/sentry-opentelemetry/sentry-opentelemetry-core/api/sentry-opentelemetry-core.api index 3ed25d1a9cf..60f1edef0d7 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-core/api/sentry-opentelemetry-core.api +++ b/sentry-opentelemetry/sentry-opentelemetry-core/api/sentry-opentelemetry-core.api @@ -100,8 +100,6 @@ public final class io/sentry/opentelemetry/OtelSpanWrapper : io/sentry/opentelem public fun startChild (Ljava/lang/String;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;)Lio/sentry/ISpan; - public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;)Lio/sentry/ISpan; - public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; public fun storeInContext (Lio/opentelemetry/context/Context;)Lio/opentelemetry/context/Context; public fun toBaggageHeader (Ljava/util/List;)Lio/sentry/BaggageHeader; diff --git a/sentry-opentelemetry/sentry-opentelemetry-core/src/main/java/io/sentry/opentelemetry/OpenTelemetryLinkErrorEventProcessor.java b/sentry-opentelemetry/sentry-opentelemetry-core/src/main/java/io/sentry/opentelemetry/OpenTelemetryLinkErrorEventProcessor.java index cf1e530cd9e..18ce4513ba6 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-core/src/main/java/io/sentry/opentelemetry/OpenTelemetryLinkErrorEventProcessor.java +++ b/sentry-opentelemetry/sentry-opentelemetry-core/src/main/java/io/sentry/opentelemetry/OpenTelemetryLinkErrorEventProcessor.java @@ -7,7 +7,6 @@ import io.sentry.Hint; import io.sentry.IScopes; import io.sentry.ISpan; -import io.sentry.Instrumenter; import io.sentry.ScopesAdapter; import io.sentry.SentryEvent; import io.sentry.SentryLevel; @@ -40,57 +39,40 @@ public OpenTelemetryLinkErrorEventProcessor() { @Override public @Nullable SentryEvent process(final @NotNull SentryEvent event, final @NotNull Hint hint) { - final @NotNull Instrumenter instrumenter = scopes.getOptions().getInstrumenter(); - if (Instrumenter.OTEL.equals(instrumenter)) { - @NotNull final Span otelSpan = Span.current(); - @NotNull final String traceId = otelSpan.getSpanContext().getTraceId(); - @NotNull final String spanId = otelSpan.getSpanContext().getSpanId(); + @NotNull final Span otelSpan = Span.current(); + @NotNull final String traceId = otelSpan.getSpanContext().getTraceId(); + @NotNull final String spanId = otelSpan.getSpanContext().getSpanId(); - if (TraceId.isValid(traceId) && SpanId.isValid(spanId)) { - final @Nullable ISpan sentrySpan = spanStorage.get(spanId); - if (sentrySpan != null) { - final @NotNull SpanContext sentrySpanSpanContext = sentrySpan.getSpanContext(); - final @NotNull String operation = sentrySpanSpanContext.getOperation(); - final @Nullable io.sentry.SpanId parentSpanId = sentrySpanSpanContext.getParentSpanId(); - final @NotNull SpanContext spanContext = - new SpanContext( - new SentryId(traceId), - new io.sentry.SpanId(spanId), - operation, - parentSpanId, - null); + if (TraceId.isValid(traceId) && SpanId.isValid(spanId)) { + final @Nullable ISpan sentrySpan = spanStorage.get(spanId); + if (sentrySpan != null) { + final @NotNull SpanContext sentrySpanSpanContext = sentrySpan.getSpanContext(); + final @NotNull String operation = sentrySpanSpanContext.getOperation(); + final @Nullable io.sentry.SpanId parentSpanId = sentrySpanSpanContext.getParentSpanId(); + final @NotNull SpanContext spanContext = + new SpanContext( + new SentryId(traceId), new io.sentry.SpanId(spanId), operation, parentSpanId, null); - event.getContexts().setTrace(spanContext); - scopes - .getOptions() - .getLogger() - .log( - SentryLevel.DEBUG, - "Linking Sentry event %s to span %s created via OpenTelemetry (trace %s).", - event.getEventId(), - spanId, - traceId); - } else { - scopes - .getOptions() - .getLogger() - .log( - SentryLevel.DEBUG, - "Not linking Sentry event %s to any transaction created via OpenTelemetry as none has been found for span %s (trace %s).", - event.getEventId(), - spanId, - traceId); - } + event.getContexts().setTrace(spanContext); + scopes + .getOptions() + .getLogger() + .log( + SentryLevel.DEBUG, + "Linking Sentry event %s to span %s created via OpenTelemetry (trace %s).", + event.getEventId(), + spanId, + traceId); } else { scopes .getOptions() .getLogger() .log( SentryLevel.DEBUG, - "Not linking Sentry event %s to any transaction created via OpenTelemetry as traceId %s or spanId %s are invalid.", + "Not linking Sentry event %s to any transaction created via OpenTelemetry as none has been found for span %s (trace %s).", event.getEventId(), - traceId, - spanId); + spanId, + traceId); } } else { scopes @@ -98,9 +80,10 @@ public OpenTelemetryLinkErrorEventProcessor() { .getLogger() .log( SentryLevel.DEBUG, - "Not linking Sentry event %s to any transaction created via OpenTelemetry as instrumenter is set to %s.", + "Not linking Sentry event %s to any transaction created via OpenTelemetry as traceId %s or spanId %s are invalid.", event.getEventId(), - instrumenter); + traceId, + spanId); } return event; diff --git a/sentry-opentelemetry/sentry-opentelemetry-core/src/main/java/io/sentry/opentelemetry/OtelSpanWrapper.java b/sentry-opentelemetry/sentry-opentelemetry-core/src/main/java/io/sentry/opentelemetry/OtelSpanWrapper.java index 80da51f9db7..a9d060061ab 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-core/src/main/java/io/sentry/opentelemetry/OtelSpanWrapper.java +++ b/sentry-opentelemetry/sentry-opentelemetry-core/src/main/java/io/sentry/opentelemetry/OtelSpanWrapper.java @@ -10,7 +10,6 @@ import io.sentry.IScopes; import io.sentry.ISentryLifecycleToken; import io.sentry.ISpan; -import io.sentry.Instrumenter; import io.sentry.MeasurementUnit; import io.sentry.NoOpScopesLifecycleToken; import io.sentry.NoOpSpan; @@ -144,43 +143,9 @@ public OtelSpanWrapper( @Override public @NotNull ISpan startChild( @NotNull String operation, @Nullable String description, @Nullable SentryDate timestamp) { - return startChild(operation, description, timestamp, Instrumenter.SENTRY); - } - - @Override - public @NotNull ISpan startChild( - @NotNull String operation, - @Nullable String description, - @Nullable SentryDate timestamp, - @NotNull Instrumenter instrumenter) { - final @NotNull SpanContext spanContext = - context.copyForChild(operation, getSpanContext().getSpanId(), null); - spanContext.setDescription(description); - spanContext.setInstrumenter(instrumenter); - final @NotNull SpanOptions spanOptions = new SpanOptions(); spanOptions.setStartTimestamp(timestamp); - - return startChild(spanContext, spanOptions); - } - - @Override - public @NotNull ISpan startChild( - @NotNull String operation, - @Nullable String description, - @Nullable SentryDate timestamp, - @NotNull Instrumenter instrumenter, - @NotNull SpanOptions spanOptions) { - if (timestamp != null) { - spanOptions.setStartTimestamp(timestamp); - } - - final @NotNull SpanContext spanContext = - context.copyForChild(operation, getSpanContext().getSpanId(), null); - spanContext.setDescription(description); - spanContext.setInstrumenter(instrumenter); - - return startChild(spanContext, spanOptions); + return startChild(operation, description, spanOptions); } @Override diff --git a/sentry-opentelemetry/sentry-opentelemetry-core/src/main/java/io/sentry/opentelemetry/SentrySpanExporter.java b/sentry-opentelemetry/sentry-opentelemetry-core/src/main/java/io/sentry/opentelemetry/SentrySpanExporter.java index 2583f4a0469..3cc492a9e4c 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-core/src/main/java/io/sentry/opentelemetry/SentrySpanExporter.java +++ b/sentry-opentelemetry/sentry-opentelemetry-core/src/main/java/io/sentry/opentelemetry/SentrySpanExporter.java @@ -21,7 +21,6 @@ import io.sentry.IScopes; import io.sentry.ISpan; import io.sentry.ITransaction; -import io.sentry.Instrumenter; import io.sentry.ScopeType; import io.sentry.ScopesAdapter; import io.sentry.SentryDate; @@ -222,7 +221,6 @@ private void createAndFinishSpanForOtelSpan( parentSentrySpan.getSpanContext().getSpanId(), new SpanId(spanId)); spanContext.setDescription(spanInfo.getDescription()); - spanContext.setInstrumenter(Instrumenter.SENTRY); if (sentrySpanMaybe != null) { spanContext.setSamplingDecision(sentrySpanMaybe.getSamplingDecision()); spanOptions.setOrigin(sentrySpanMaybe.getSpanContext().getOrigin()); @@ -339,7 +337,6 @@ private void transferSpanDetails( transactionName == null ? DEFAULT_TRANSACTION_NAME : transactionName); transactionContext.setTransactionNameSource(transactionNameSource); transactionContext.setOperation(spanInfo.getOp()); - transactionContext.setInstrumenter(Instrumenter.SENTRY); transactionContext.setProfilerId(profilerId); if (sentrySpanMaybe != null) { transactionContext.setSamplingDecision(sentrySpanMaybe.getSamplingDecision()); diff --git a/sentry-opentelemetry/sentry-opentelemetry-core/src/main/java/io/sentry/opentelemetry/SentrySpanProcessor.java b/sentry-opentelemetry/sentry-opentelemetry-core/src/main/java/io/sentry/opentelemetry/SentrySpanProcessor.java index 31bd6368318..d7ae028657d 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-core/src/main/java/io/sentry/opentelemetry/SentrySpanProcessor.java +++ b/sentry-opentelemetry/sentry-opentelemetry-core/src/main/java/io/sentry/opentelemetry/SentrySpanProcessor.java @@ -19,7 +19,6 @@ import io.sentry.IScopes; import io.sentry.ISpan; import io.sentry.ITransaction; -import io.sentry.Instrumenter; import io.sentry.PropagationContext; import io.sentry.ScopesAdapter; import io.sentry.SentryDate; @@ -103,9 +102,9 @@ public void onStart(final @NotNull Context parentContext, final @NotNull ReadWri new SentryLongDate(otelSpan.toSpanData().getStartEpochNanos()); final @NotNull SpanOptions spanOptions = new SpanOptions(); spanOptions.setOrigin(TRACE_ORIGN); + spanOptions.setStartTimestamp(startDate); final @NotNull ISpan sentryChildSpan = - sentryParentSpan.startChild( - otelSpan.getName(), otelSpan.getName(), startDate, Instrumenter.OTEL, spanOptions); + sentryParentSpan.startChild(otelSpan.getName(), otelSpan.getName(), spanOptions); spanStorage.store(traceData.getSpanId(), sentryChildSpan); } else { scopes @@ -135,7 +134,6 @@ public void onStart(final @NotNull Context parentContext, final @NotNull ReadWri transactionContext.setName(transactionName); transactionContext.setTransactionNameSource(transactionNameSource); transactionContext.setOperation(op); - transactionContext.setInstrumenter(Instrumenter.OTEL); TransactionOptions transactionOptions = new TransactionOptions(); transactionOptions.setStartTimestamp( @@ -232,18 +230,6 @@ private boolean ensurePrerequisites(final @NotNull ReadableSpan otelSpan) { return false; } - final @NotNull Instrumenter instrumenter = scopes.getOptions().getInstrumenter(); - if (!Instrumenter.OTEL.equals(instrumenter)) { - scopes - .getOptions() - .getLogger() - .log( - SentryLevel.DEBUG, - "Not forwarding OpenTelemetry span to Sentry as instrumenter has been set to %s.", - instrumenter); - return false; - } - final @NotNull SpanContext otelSpanContext = otelSpan.getSpanContext(); if (!otelSpanContext.isValid()) { scopes diff --git a/sentry-opentelemetry/sentry-opentelemetry-core/src/test/kotlin/OtelSpanWrapperTest.kt b/sentry-opentelemetry/sentry-opentelemetry-core/src/test/kotlin/OtelSpanWrapperTest.kt index 98d3989aaaf..0dc7a207d1b 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-core/src/test/kotlin/OtelSpanWrapperTest.kt +++ b/sentry-opentelemetry/sentry-opentelemetry-core/src/test/kotlin/OtelSpanWrapperTest.kt @@ -8,7 +8,6 @@ import io.opentelemetry.sdk.trace.ReadWriteSpan import io.sentry.IScopes import io.sentry.ISpan import io.sentry.ISpanFactory -import io.sentry.Instrumenter import io.sentry.SentryLongDate import io.sentry.SentryOptions import io.sentry.SpanOptions @@ -22,7 +21,7 @@ import org.mockito.kotlin.whenever class OtelSpanWrapperTest { @Test - fun `startChild with timestamp forwards timestamp and Sentry instrumenter`() { + fun `startChild with timestamp forwards timestamp`() { val otelSpan = mock() whenever(otelSpan.spanContext) .thenReturn( @@ -55,6 +54,5 @@ class OtelSpanWrapperTest { assertThat(spanOptions.firstValue.startTimestamp).isSameInstanceAs(timestamp) assertThat(spanContext.firstValue.operation).isEqualTo("child-op") assertThat(spanContext.firstValue.description).isEqualTo("description") - assertThat(spanContext.firstValue.instrumenter).isEqualTo(Instrumenter.SENTRY) } } diff --git a/sentry-opentelemetry/sentry-opentelemetry-core/src/test/kotlin/SentrySpanProcessorTest.kt b/sentry-opentelemetry/sentry-opentelemetry-core/src/test/kotlin/SentrySpanProcessorTest.kt index df2cf9596dd..f8bc7a023cb 100644 --- a/sentry-opentelemetry/sentry-opentelemetry-core/src/test/kotlin/SentrySpanProcessorTest.kt +++ b/sentry-opentelemetry/sentry-opentelemetry-core/src/test/kotlin/SentrySpanProcessorTest.kt @@ -25,7 +25,6 @@ import io.sentry.Hint import io.sentry.IScopes import io.sentry.ISpan import io.sentry.ITransaction -import io.sentry.Instrumenter import io.sentry.SentryDate import io.sentry.SentryEvent import io.sentry.SentryOptions @@ -64,11 +63,7 @@ class SentrySpanProcessorTest { private class Fixture { - val options = - SentryOptions().also { - it.dsn = "https://key@sentry.io/proj" - it.instrumenter = Instrumenter.OTEL - } + val options = SentryOptions().also { it.dsn = "https://key@sentry.io/proj" } val scopes = mock() val transaction = mock() val span = mock() @@ -96,15 +91,7 @@ class SentrySpanProcessorTest { whenever(span.toBaggageHeader(any())).thenReturn(baggageHeader) whenever(transaction.toBaggageHeader(any())).thenReturn(baggageHeader) - whenever( - transaction.startChild( - any(), - anyOrNull(), - anyOrNull(), - eq(Instrumenter.OTEL), - any(), - ) - ) + whenever(transaction.startChild(any(), anyOrNull(), any())) .thenReturn(span) val sdkTracerProvider = @@ -371,17 +358,6 @@ class SentrySpanProcessorTest { } } - @Test - fun `does not link error to OTEL transaction if instrumenter does not match`() { - fixture.options.instrumenter = Instrumenter.SENTRY - fixture.setup() - - val processedEvent = - OpenTelemetryLinkErrorEventProcessor(fixture.scopes).process(SentryEvent(), Hint()) - - thenNoTraceContextHasBeenAddedToEvent(processedEvent) - } - private fun givenSpanBuilder( spanKind: SpanKind = SpanKind.SERVER, parentSpan: Span? = null, @@ -483,14 +459,7 @@ class SentrySpanProcessorTest { } private fun thenChildSpanIsStarted() { - verify(fixture.transaction) - .startChild( - eq("childspan"), - eq("childspan"), - any(), - eq(Instrumenter.OTEL), - any(), - ) + verify(fixture.transaction).startChild(eq("childspan"), eq("childspan"), any()) } private fun thenChildSpanIsFinished(status: SpanStatus = SpanStatus.OK) { diff --git a/sentry/api/sentry.api b/sentry/api/sentry.api index 2007edf00c9..d2335291993 100644 --- a/sentry/api/sentry.api +++ b/sentry/api/sentry.api @@ -1274,8 +1274,6 @@ public abstract interface class io/sentry/ISpan { public abstract fun startChild (Ljava/lang/String;)Lio/sentry/ISpan; public abstract fun startChild (Ljava/lang/String;Ljava/lang/String;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;)Lio/sentry/ISpan; - public abstract fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;)Lio/sentry/ISpan; - public abstract fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; public abstract fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; public abstract fun toBaggageHeader (Ljava/util/List;)Lio/sentry/BaggageHeader; public abstract fun toSentryTrace ()Lio/sentry/SentryTraceHeader; @@ -1328,13 +1326,6 @@ public final class io/sentry/InitPriority : java/lang/Enum { public static fun values ()[Lio/sentry/InitPriority; } -public final class io/sentry/Instrumenter : java/lang/Enum { - public static final field OTEL Lio/sentry/Instrumenter; - public static final field SENTRY Lio/sentry/Instrumenter; - public static fun valueOf (Ljava/lang/String;)Lio/sentry/Instrumenter; - public static fun values ()[Lio/sentry/Instrumenter; -} - public abstract interface class io/sentry/Integration { public abstract fun register (Lio/sentry/IScopes;Lio/sentry/SentryOptions;)V } @@ -2045,8 +2036,6 @@ public final class io/sentry/NoOpSpan : io/sentry/ISpan { public fun startChild (Ljava/lang/String;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;)Lio/sentry/ISpan; - public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;)Lio/sentry/ISpan; - public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; public fun toBaggageHeader (Ljava/util/List;)Lio/sentry/BaggageHeader; public fun toSentryTrace ()Lio/sentry/SentryTraceHeader; @@ -2105,8 +2094,6 @@ public final class io/sentry/NoOpTransaction : io/sentry/ITransaction { public fun startChild (Ljava/lang/String;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;)Lio/sentry/ISpan; - public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;)Lio/sentry/ISpan; - public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; public fun toBaggageHeader (Ljava/util/List;)Lio/sentry/BaggageHeader; public fun toSentryTrace ()Lio/sentry/SentryTraceHeader; @@ -3813,7 +3800,6 @@ public class io/sentry/SentryOptions : io/sentry/transport/RateLimiterConfig { public fun getInAppExcludes ()Ljava/util/List; public fun getInAppIncludes ()Ljava/util/List; public fun getInitPriority ()Lio/sentry/InitPriority; - public fun getInstrumenter ()Lio/sentry/Instrumenter; public fun getIntegrations ()Ljava/util/List; public fun getInternalTracesSampler ()Lio/sentry/TracesSampler; public fun getLogger ()Lio/sentry/ILogger; @@ -3982,7 +3968,6 @@ public class io/sentry/SentryOptions : io/sentry/transport/RateLimiterConfig { public fun setIgnoredSpanOrigins (Ljava/util/List;)V public fun setIgnoredTransactions (Ljava/util/List;)V public fun setInitPriority (Lio/sentry/InitPriority;)V - public fun setInstrumenter (Lio/sentry/Instrumenter;)V public fun setLogger (Lio/sentry/ILogger;)V public fun setLogs (Lio/sentry/SentryOptions$Logs;)V public fun setMaxAttachmentSize (J)V @@ -4374,8 +4359,6 @@ public final class io/sentry/SentryTracer : io/sentry/ITransaction { public fun startChild (Ljava/lang/String;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;)Lio/sentry/ISpan; - public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;)Lio/sentry/ISpan; - public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; public fun toBaggageHeader (Ljava/util/List;)Lio/sentry/BaggageHeader; public fun toSentryTrace ()Lio/sentry/SentryTraceHeader; @@ -4511,8 +4494,6 @@ public final class io/sentry/Span : io/sentry/ISpan { public fun startChild (Ljava/lang/String;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;)Lio/sentry/ISpan; - public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;)Lio/sentry/ISpan; - public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SentryDate;Lio/sentry/Instrumenter;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; public fun startChild (Ljava/lang/String;Ljava/lang/String;Lio/sentry/SpanOptions;)Lio/sentry/ISpan; public fun toBaggageHeader (Ljava/util/List;)Lio/sentry/BaggageHeader; public fun toSentryTrace ()Lio/sentry/SentryTraceHeader; @@ -4543,7 +4524,6 @@ public class io/sentry/SpanContext : io/sentry/JsonSerializable, io/sentry/JsonU public fun getData ()Ljava/util/Map; public fun getDescription ()Ljava/lang/String; public fun getFeatureFlagBuffer ()Lio/sentry/featureflags/IFeatureFlagBuffer; - public fun getInstrumenter ()Lio/sentry/Instrumenter; public fun getOperation ()Ljava/lang/String; public fun getOrigin ()Ljava/lang/String; public fun getParentSpanId ()Lio/sentry/SpanId; @@ -4560,7 +4540,6 @@ public class io/sentry/SpanContext : io/sentry/JsonSerializable, io/sentry/JsonU public fun serialize (Lio/sentry/ObjectWriter;Lio/sentry/ILogger;)V public fun setData (Ljava/lang/String;Ljava/lang/Object;)V public fun setDescription (Ljava/lang/String;)V - public fun setInstrumenter (Lio/sentry/Instrumenter;)V public fun setOperation (Ljava/lang/String;)V public fun setOrigin (Ljava/lang/String;)V public fun setProfilerId (Lio/sentry/protocol/SentryId;)V diff --git a/sentry/src/main/java/io/sentry/ISpan.java b/sentry/src/main/java/io/sentry/ISpan.java index 9c55cdc3201..6b6af7bbbb3 100644 --- a/sentry/src/main/java/io/sentry/ISpan.java +++ b/sentry/src/main/java/io/sentry/ISpan.java @@ -39,23 +39,6 @@ ISpan startChild( @NotNull ISpan startChild(@NotNull SpanContext spanContext, @NotNull SpanOptions spanOptions); - @ApiStatus.Internal - @NotNull - ISpan startChild( - @NotNull String operation, - @Nullable String description, - @Nullable SentryDate timestamp, - @NotNull Instrumenter instrumenter); - - @ApiStatus.Internal - @NotNull - ISpan startChild( - @NotNull String operation, - @Nullable String description, - @Nullable SentryDate timestamp, - @NotNull Instrumenter instrumenter, - @NotNull SpanOptions spanOptions); - /** * Starts a child Span. * @@ -77,7 +60,9 @@ ISpan startChild( @NotNull default ISpan startChild( @NotNull String operation, @Nullable String description, @Nullable SentryDate timestamp) { - return startChild(operation, description, timestamp, Instrumenter.SENTRY); + final @NotNull SpanOptions spanOptions = new SpanOptions(); + spanOptions.setStartTimestamp(timestamp); + return startChild(operation, description, spanOptions); } /** diff --git a/sentry/src/main/java/io/sentry/Instrumenter.java b/sentry/src/main/java/io/sentry/Instrumenter.java deleted file mode 100644 index f72535bde81..00000000000 --- a/sentry/src/main/java/io/sentry/Instrumenter.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.sentry; - -/** - * Which framework is responsible for instrumenting. This includes starting and stopping of - * transactions and spans. - */ -public enum Instrumenter { - SENTRY, - - /** OpenTelemetry */ - OTEL -} diff --git a/sentry/src/main/java/io/sentry/NoOpSpan.java b/sentry/src/main/java/io/sentry/NoOpSpan.java index 676c539942d..3c00c536236 100644 --- a/sentry/src/main/java/io/sentry/NoOpSpan.java +++ b/sentry/src/main/java/io/sentry/NoOpSpan.java @@ -35,25 +35,6 @@ public static NoOpSpan getInstance() { return NoOpSpan.getInstance(); } - @Override - public @NotNull ISpan startChild( - @NotNull String operation, - @Nullable String description, - @Nullable SentryDate timestamp, - @NotNull Instrumenter instrumenter) { - return NoOpSpan.getInstance(); - } - - @Override - public @NotNull ISpan startChild( - @NotNull String operation, - @Nullable String description, - @Nullable SentryDate timestamp, - @NotNull Instrumenter instrumenter, - @NotNull SpanOptions spanOptions) { - return NoOpSpan.getInstance(); - } - @Override public @NotNull ISpan startChild( final @NotNull String operation, final @Nullable String description) { diff --git a/sentry/src/main/java/io/sentry/NoOpTransaction.java b/sentry/src/main/java/io/sentry/NoOpTransaction.java index 1f34870c9ad..b89b0f0e57a 100644 --- a/sentry/src/main/java/io/sentry/NoOpTransaction.java +++ b/sentry/src/main/java/io/sentry/NoOpTransaction.java @@ -54,25 +54,6 @@ public void setName(@NotNull String name, @NotNull TransactionNameSource transac return NoOpSpan.getInstance(); } - @Override - public @NotNull ISpan startChild( - @NotNull String operation, - @Nullable String description, - @Nullable SentryDate timestamp, - @NotNull Instrumenter instrumenter) { - return NoOpSpan.getInstance(); - } - - @Override - public @NotNull ISpan startChild( - @NotNull String operation, - @Nullable String description, - @Nullable SentryDate timestamp, - @NotNull Instrumenter instrumenter, - @NotNull SpanOptions spanOptions) { - return NoOpSpan.getInstance(); - } - @Override public @NotNull ISpan startChild( final @NotNull String operation, final @Nullable String description) { diff --git a/sentry/src/main/java/io/sentry/Scopes.java b/sentry/src/main/java/io/sentry/Scopes.java index d3926d56993..b0e5cdd8068 100644 --- a/sentry/src/main/java/io/sentry/Scopes.java +++ b/sentry/src/main/java/io/sentry/Scopes.java @@ -950,15 +950,6 @@ public void flush(long timeoutMillis) { transactionContext.getOrigin()); transaction = NoOpTransaction.getInstance(); - } else if (!getOptions().getInstrumenter().equals(transactionContext.getInstrumenter())) { - getOptions() - .getLogger() - .log( - SentryLevel.DEBUG, - "Returning no-op for instrumenter %s as the SDK has been configured to use instrumenter %s", - transactionContext.getInstrumenter(), - getOptions().getInstrumenter()); - transaction = NoOpTransaction.getInstance(); } else if (!getOptions().isTracingEnabled()) { getOptions() .getLogger() diff --git a/sentry/src/main/java/io/sentry/SentryOptions.java b/sentry/src/main/java/io/sentry/SentryOptions.java index 36b34630d4e..0bcbc128dda 100644 --- a/sentry/src/main/java/io/sentry/SentryOptions.java +++ b/sentry/src/main/java/io/sentry/SentryOptions.java @@ -503,9 +503,6 @@ public class SentryOptions implements RateLimiterConfig { /** Enable or disable automatic breadcrumbs for User interactions */ private boolean enableUserInteractionBreadcrumbs = true; - /** Which framework is responsible for instrumenting. */ - private @NotNull Instrumenter instrumenter = Instrumenter.SENTRY; - /** Contains a list of GestureTargetLocator instances used for user interaction tracking */ private final @NotNull List gestureTargetLocators = new ArrayList<>(); @@ -2620,32 +2617,6 @@ public void setEnableUserInteractionBreadcrumbs(boolean enableUserInteractionBre this.enableUserInteractionBreadcrumbs = enableUserInteractionBreadcrumbs; } - /** - * Sets the instrumenter used for performance instrumentation. - * - *

If you set this to something other than {@link Instrumenter#SENTRY} Sentry will not create - * any transactions automatically nor will it create transactions if you call - * startTransaction(...), nor will it create child spans if you call startChild(...) - * - * @param instrumenter - the instrumenter to use - * @deprecated this should no longer be needed with our current OpenTelmetry integration. Use - * {@link SentryOptions#setIgnoredSpanOrigins(List)} instead if you need fine grained control - * over what integrations can create spans. - */ - @Deprecated - public void setInstrumenter(final @NotNull Instrumenter instrumenter) { - this.instrumenter = instrumenter; - } - - /** - * Returns the instrumenter used for performance instrumentation - * - * @return the configured instrumenter - */ - public @NotNull Instrumenter getInstrumenter() { - return instrumenter; - } - /** * Returns a ClientReportRecorder or a NoOp if sending of client reports has been disabled. * diff --git a/sentry/src/main/java/io/sentry/SentryTracer.java b/sentry/src/main/java/io/sentry/SentryTracer.java index d60187cb4d5..11fa6b5b068 100644 --- a/sentry/src/main/java/io/sentry/SentryTracer.java +++ b/sentry/src/main/java/io/sentry/SentryTracer.java @@ -50,7 +50,6 @@ public final class SentryTracer implements ITransaction { private final @NotNull AtomicBoolean isDeadlineTimerRunning = new AtomicBoolean(false); private @NotNull TransactionNameSource transactionNameSource; - private final @NotNull Instrumenter instrumenter; private final @NotNull Contexts contexts = new Contexts(); private final @Nullable CompositePerformanceCollector compositePerformanceCollector; private final @NotNull TransactionOptions transactionOptions; @@ -77,7 +76,6 @@ public SentryTracer( this.root = new Span(context, this, scopes, transactionOptions); this.name = context.getName(); - this.instrumenter = context.getInstrumenter(); this.scopes = scopes; // Let's collect performance data (cpu, ram, frames) only when the transaction is sampled this.compositePerformanceCollector = @@ -388,42 +386,6 @@ ISpan startChild( return createChild(parentSpanId, operation, description, spanOptions); } - @NotNull - ISpan startChild( - final @NotNull SpanId parentSpanId, - final @NotNull String operation, - final @Nullable String description, - final @Nullable SentryDate timestamp, - final @NotNull Instrumenter instrumenter) { - final @NotNull SpanContext spanContext = - getSpanContext().copyForChild(operation, parentSpanId, null); - spanContext.setDescription(description); - spanContext.setInstrumenter(instrumenter); - - final @NotNull SpanOptions spanOptions = new SpanOptions(); - spanOptions.setStartTimestamp(timestamp); - - return createChild(spanContext, spanOptions); - } - - @NotNull - ISpan startChild( - final @NotNull SpanId parentSpanId, - final @NotNull String operation, - final @Nullable String description, - final @Nullable SentryDate timestamp, - final @NotNull Instrumenter instrumenter, - final @NotNull SpanOptions spanOptions) { - final @NotNull SpanContext spanContext = - getSpanContext().copyForChild(operation, parentSpanId, null); - spanContext.setDescription(description); - spanContext.setInstrumenter(instrumenter); - - spanOptions.setStartTimestamp(timestamp); - - return createChild(spanContext, spanOptions); - } - /** * Starts a child Span with given trace id and parent span id. * @@ -442,7 +404,6 @@ private ISpan createChild( final @NotNull SpanContext spanContext = getSpanContext().copyForChild(operation, parentSpanId, null); spanContext.setDescription(description); - spanContext.setInstrumenter(Instrumenter.SENTRY); return createChild(spanContext, options); } @@ -454,10 +415,6 @@ private ISpan createChild( return NoOpSpan.getInstance(); } - if (!this.instrumenter.equals(spanContext.getInstrumenter())) { - return NoOpSpan.getInstance(); - } - if (SpanUtils.isIgnored(scopes.getOptions().getIgnoredSpanOrigins(), spanOptions.getOrigin())) { return NoOpSpan.getInstance(); } @@ -622,43 +579,26 @@ private boolean isProfileMissing( return this.startChild(operation, (String) null); } - @Override - public @NotNull ISpan startChild( - @NotNull String operation, - @Nullable String description, - @Nullable SentryDate timestamp, - @NotNull Instrumenter instrumenter) { - return startChild(operation, description, timestamp, instrumenter, new SpanOptions()); - } - - @Override - public @NotNull ISpan startChild( - final @NotNull String operation, - @Nullable String description, - @Nullable SentryDate timestamp, - @NotNull Instrumenter instrumenter, - @NotNull SpanOptions spanOptions) { - return createChild(operation, description, timestamp, instrumenter, spanOptions); - } - @Override public @NotNull ISpan startChild( final @NotNull String operation, @Nullable String description, @Nullable SentryDate timestamp) { - return createChild(operation, description, timestamp, Instrumenter.SENTRY, new SpanOptions()); + final @NotNull SpanOptions spanOptions = new SpanOptions(); + spanOptions.setStartTimestamp(timestamp); + return root.startChild(operation, description, spanOptions); } @Override public @NotNull ISpan startChild( final @NotNull String operation, final @Nullable String description) { - return startChild(operation, description, null, Instrumenter.SENTRY, new SpanOptions()); + return root.startChild(operation, description); } @Override public @NotNull ISpan startChild( @NotNull String operation, @Nullable String description, @NotNull SpanOptions spanOptions) { - return createChild(operation, description, null, Instrumenter.SENTRY, spanOptions); + return root.startChild(operation, description, spanOptions); } @Override @@ -667,35 +607,6 @@ private boolean isProfileMissing( return createChild(spanContext, spanOptions); } - private @NotNull ISpan createChild( - final @NotNull String operation, - final @Nullable String description, - @Nullable SentryDate timestamp, - final @NotNull Instrumenter instrumenter, - final @NotNull SpanOptions spanOptions) { - if (root.isFinished()) { - return NoOpSpan.getInstance(); - } - - if (!this.instrumenter.equals(instrumenter)) { - return NoOpSpan.getInstance(); - } - - if (children.size() < scopes.getOptions().getMaxSpans()) { - return root.startChild(operation, description, timestamp, instrumenter, spanOptions); - } else { - scopes - .getOptions() - .getLogger() - .log( - SentryLevel.WARNING, - "Span operation: %s, description: %s dropped due to limit reached. Returning NoOpSpan.", - operation, - description); - return NoOpSpan.getInstance(); - } - } - @Override public @NotNull SentryTraceHeader toSentryTrace() { return root.toSentryTrace(); diff --git a/sentry/src/main/java/io/sentry/Span.java b/sentry/src/main/java/io/sentry/Span.java index 7ee7eed1900..0e4d0266a81 100644 --- a/sentry/src/main/java/io/sentry/Span.java +++ b/sentry/src/main/java/io/sentry/Span.java @@ -103,25 +103,12 @@ public Span( return this.startChild(operation, (String) null); } - @Override - public @NotNull ISpan startChild( - final @NotNull String operation, - final @Nullable String description, - final @Nullable SentryDate timestamp, - final @NotNull Instrumenter instrumenter, - @NotNull SpanOptions spanOptions) { - if (finished) { - return NoOpSpan.getInstance(); - } - - return transaction.startChild( - context.getSpanId(), operation, description, timestamp, instrumenter, spanOptions); - } - @Override public @NotNull ISpan startChild( @NotNull String operation, @Nullable String description, @Nullable SentryDate timestamp) { - return startChild(operation, description, timestamp, Instrumenter.SENTRY); + final @NotNull SpanOptions spanOptions = new SpanOptions(); + spanOptions.setStartTimestamp(timestamp); + return startChild(operation, description, spanOptions); } @Override @@ -149,15 +136,6 @@ public Span( return transaction.startChild(spanContext, spanOptions); } - @Override - public @NotNull ISpan startChild( - @NotNull String operation, - @Nullable String description, - @Nullable SentryDate timestamp, - @NotNull Instrumenter instrumenter) { - return startChild(operation, description, timestamp, instrumenter, new SpanOptions()); - } - @Override public @NotNull SentryTraceHeader toSentryTrace() { return new SentryTraceHeader(context.getTraceId(), context.getSpanId(), context.getSampled()); diff --git a/sentry/src/main/java/io/sentry/SpanContext.java b/sentry/src/main/java/io/sentry/SpanContext.java index 19ab2c3ad87..2f93d582f1e 100644 --- a/sentry/src/main/java/io/sentry/SpanContext.java +++ b/sentry/src/main/java/io/sentry/SpanContext.java @@ -53,8 +53,6 @@ public class SpanContext implements JsonUnknown, JsonSerializable { private @Nullable Map unknown; - private @NotNull Instrumenter instrumenter = Instrumenter.SENTRY; - protected @Nullable Baggage baggage; protected @NotNull IFeatureFlagBuffer featureFlags = SpanFeatureFlagBuffer.create(); @@ -253,14 +251,6 @@ public void setOrigin(final @Nullable String origin) { this.origin = origin; } - public @NotNull Instrumenter getInstrumenter() { - return instrumenter; - } - - public void setInstrumenter(final @NotNull Instrumenter instrumenter) { - this.instrumenter = instrumenter; - } - public @Nullable Baggage getBaggage() { return baggage; } diff --git a/sentry/src/test/java/io/sentry/InstrumenterTest.kt b/sentry/src/test/java/io/sentry/InstrumenterTest.kt deleted file mode 100644 index 639541c12c8..00000000000 --- a/sentry/src/test/java/io/sentry/InstrumenterTest.kt +++ /dev/null @@ -1,18 +0,0 @@ -package io.sentry - -import kotlin.test.Test -import kotlin.test.assertEquals - -class InstrumenterTest { - @Test - fun `can create from otel string`() { - val instrumenter = Instrumenter.valueOf("OTEL") - assertEquals(instrumenter, Instrumenter.OTEL) - } - - @Test - fun `can create from sentry string`() { - val instrumenter = Instrumenter.valueOf("SENTRY") - assertEquals(instrumenter, Instrumenter.SENTRY) - } -} diff --git a/sentry/src/test/java/io/sentry/NoOpTransactionTest.kt b/sentry/src/test/java/io/sentry/NoOpTransactionTest.kt index a1a81d37407..2d146aab84d 100644 --- a/sentry/src/test/java/io/sentry/NoOpTransactionTest.kt +++ b/sentry/src/test/java/io/sentry/NoOpTransactionTest.kt @@ -16,10 +16,6 @@ class NoOpTransactionTest { assertNotNull(transaction.startChild("op", "desc")) assertNotNull(transaction.startChild("op", "desc", SpanOptions())) assertNotNull(transaction.startChild("op", "desc", SentryNanotimeDate())) - assertNotNull(transaction.startChild("op", "desc", SentryNanotimeDate(), Instrumenter.SENTRY)) - assertNotNull( - transaction.startChild("op", "desc", SentryNanotimeDate(), Instrumenter.SENTRY, SpanOptions()) - ) } @Test diff --git a/sentry/src/test/java/io/sentry/ScopesTest.kt b/sentry/src/test/java/io/sentry/ScopesTest.kt index 324a097a7fd..982441e1160 100644 --- a/sentry/src/test/java/io/sentry/ScopesTest.kt +++ b/sentry/src/test/java/io/sentry/ScopesTest.kt @@ -1101,39 +1101,6 @@ class ScopesTest { assertEquals("test", scope?.transactionName) } - @Test - fun `when startTransaction is called with different instrumenter, no-op is returned`() { - val scopes = generateScopes() - - val transactionContext = - TransactionContext("test", "op").also { it.instrumenter = Instrumenter.OTEL } - val transactionOptions = TransactionOptions() - val tx = scopes.startTransaction(transactionContext, transactionOptions) - - assertTrue(tx is NoOpTransaction) - } - - @Test - fun `when startTransaction is called with different instrumenter, no-op is returned 2`() { - val scopes = generateScopes() { it.instrumenter = Instrumenter.OTEL } - - val tx = scopes.startTransaction("test", "op") - - assertTrue(tx is NoOpTransaction) - } - - @Test - fun `when startTransaction is called with configured instrumenter, it works`() { - val scopes = generateScopes() { it.instrumenter = Instrumenter.OTEL } - - val transactionContext = - TransactionContext("test", "op").also { it.instrumenter = Instrumenter.OTEL } - val transactionOptions = TransactionOptions() - val tx = scopes.startTransaction(transactionContext, transactionOptions) - - assertFalse(tx is NoOpTransaction) - } - // endregion // region setUser tests diff --git a/sentry/src/test/java/io/sentry/SpanTest.kt b/sentry/src/test/java/io/sentry/SpanTest.kt index b61e12ad87f..f8704f1e251 100644 --- a/sentry/src/test/java/io/sentry/SpanTest.kt +++ b/sentry/src/test/java/io/sentry/SpanTest.kt @@ -184,26 +184,6 @@ class SpanTest { assertEquals(2, transaction.spans.size) } - @Test - fun `starting a child with different instrumenter no-ops`() { - val transaction = - getTransaction(TransactionContext("name", "op").also { it.instrumenter = Instrumenter.OTEL }) - val span = transaction.startChild("operation", "description") - - span.startChild("op") - assertEquals(0, transaction.spans.size) - } - - @Test - fun `starting a child with same instrumenter adds span to transaction`() { - val transaction = - getTransaction(TransactionContext("name", "op").also { it.instrumenter = Instrumenter.OTEL }) - val span = transaction.startChild("operation", "description", null, Instrumenter.OTEL) - - span.startChild("op", "desc", null, Instrumenter.OTEL) - assertEquals(2, transaction.spans.size) - } - @Test fun `when span was not finished, isFinished returns false`() { val span = startChildFromSpan() @@ -313,9 +293,9 @@ class SpanTest { span.startChild( "op1", "desc", - SentryLongDate(span.startDate.nanoTimestamp() - 1000L), - Instrumenter.SENTRY, - SpanOptions(), + SpanOptions().apply { + startTimestamp = SentryLongDate(span.startDate.nanoTimestamp() - 1000L) + }, ) as Span child1.finish() span.finish(SpanStatus.OK)