Skip to content

Commit 0f11cea

Browse files
committed
RUM-9899: post-review fixes
1 parent d05eaa2 commit 0f11cea

File tree

12 files changed

+59
-45
lines changed

12 files changed

+59
-45
lines changed

ci/pipelines/default-pipeline.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -554,7 +554,7 @@ publish:release-trace-internal:
554554
timeout: 30m
555555
script:
556556
- !reference [ .snippets, set-publishing-credentials ]
557-
- ./gradlew :features:dd-sdk-android-trace-internal:publishToSonatype --stacktrace --no-daemon
557+
- ./gradlew :features:dd-sdk-android-trace-internal:publishToSonatype closeSonatypeStagingRepository --stacktrace --no-daemon
558558
artifacts:
559559
when: on_success
560560
expire_in: 7 days

features/dd-sdk-android-trace-api/api/dd-sdk-android-trace-api.api

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ public abstract interface class com/datadog/android/trace/api/scope/DatadogScope
8484

8585
public abstract interface class com/datadog/android/trace/api/span/DatadogSpan {
8686
public abstract fun addThrowable (Ljava/lang/Throwable;)V
87-
public abstract fun addThrowable (Ljava/lang/Throwable;B)V
8887
public abstract fun context ()Lcom/datadog/android/trace/api/span/DatadogSpanContext;
8988
public abstract fun drop ()V
9089
public abstract fun finish ()V

features/dd-sdk-android-trace-api/src/main/kotlin/com/datadog/android/trace/api/propagation/DatadogPropagation.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import com.datadog.android.trace.api.span.DatadogSpanContext
99

1010
/**
1111
* Provides an interface for injecting and extracting span context to/from specified carriers.
12-
* Used for propagating context to http headers
12+
* Used for propagating context to http headers.
1313
*/
1414
interface DatadogPropagation {
1515

features/dd-sdk-android-trace-api/src/main/kotlin/com/datadog/android/trace/api/span/DatadogSpan.kt

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -116,15 +116,6 @@ interface DatadogSpan {
116116
*/
117117
fun addThrowable(throwable: Throwable)
118118

119-
/**
120-
* Associates a throwable with the current span, marking it as an error
121-
* and capturing the provided throwable for additional context with a specified error priority.
122-
*
123-
* @param throwable The throwable to associate with the current span.
124-
* @param errorPriority The priority level of the error, represented as a byte.
125-
*/
126-
fun addThrowable(throwable: Throwable, errorPriority: Byte)
127-
128119
/**
129120
* Associates a tag with the specified value for the current span.
130121
*

features/dd-sdk-android-trace-otel/src/main/java/com/datadog/opentelemetry/trace/OtelSpan.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.datadog.android.trace.api.span.DatadogSpan;
2222
import com.datadog.android.trace.api.span.DatadogSpanContext;
2323
import com.datadog.android.trace.api.tracer.DatadogTracer;
24+
import com.datadog.android.trace.internal.DatadogTracingToolkit;
2425

2526
import java.util.List;
2627
import java.util.concurrent.TimeUnit;
@@ -114,7 +115,7 @@ public StatusCode getStatusCode() {
114115
public Span recordException(Throwable exception, Attributes additionalAttributes) {
115116
if (this.recording) {
116117
// Store exception as span tags as span events are not supported yet
117-
this.delegate.addThrowable(exception, DatadogTracingConstants.ErrorPriorities.UNSET);
118+
DatadogTracingToolkit.addThrowable(delegate, exception, DatadogTracingConstants.ErrorPriorities.UNSET);
118119
}
119120
return this;
120121
}

features/dd-sdk-android-trace-otel/src/test/kotlin/com/datadog/opentelemetry/trace/OtelSpanTest.kt

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import com.datadog.android.trace.api.DatadogTracingConstants.DEFAULT_ASYNC_PROPA
1010
import com.datadog.android.trace.api.DatadogTracingConstants.ErrorPriorities
1111
import com.datadog.android.trace.api.span.DatadogSpan
1212
import com.datadog.android.trace.api.tracer.DatadogTracer
13+
import com.datadog.android.trace.internal.DatadogTracingToolkit
1314
import com.datadog.android.trace.opentelemetry.utils.forge.Configurator
1415
import fr.xgouchet.elmyr.annotation.Forgery
1516
import fr.xgouchet.elmyr.annotation.StringForgery
@@ -28,14 +29,14 @@ import org.junit.jupiter.params.provider.Arguments
2829
import org.junit.jupiter.params.provider.EnumSource
2930
import org.junit.jupiter.params.provider.MethodSource
3031
import org.mockito.Mock
32+
import org.mockito.Mockito
3133
import org.mockito.junit.jupiter.MockitoExtension
3234
import org.mockito.junit.jupiter.MockitoSettings
3335
import org.mockito.kotlin.any
3436
import org.mockito.kotlin.anyOrNull
3537
import org.mockito.kotlin.mock
3638
import org.mockito.kotlin.never
3739
import org.mockito.kotlin.verify
38-
import org.mockito.kotlin.verifyNoInteractions
3940
import org.mockito.kotlin.verifyNoMoreInteractions
4041
import org.mockito.quality.Strictness
4142

@@ -212,27 +213,33 @@ internal class OtelSpanTest {
212213
fun `M delegate to AgentSpan W recordException`(@Forgery fakeThrowable: Throwable) {
213214
// Given
214215
val mockAttributes: Attributes = mock()
215-
216-
// When
217-
testedSpan.recordException(fakeThrowable, mockAttributes)
218-
219-
// Then
220-
verify(mockAgentSpan).addThrowable(fakeThrowable, ErrorPriorities.UNSET)
221-
verifyNoInteractions(mockAttributes)
216+
Mockito.mockStatic(DatadogTracingToolkit::class.java).use { mockedStatic ->
217+
// When
218+
testedSpan.recordException(fakeThrowable, mockAttributes)
219+
// Then
220+
mockedStatic.verify {
221+
DatadogTracingToolkit.addThrowable(
222+
mockAgentSpan,
223+
fakeThrowable,
224+
ErrorPriorities.UNSET
225+
)
226+
}
227+
mockedStatic.verifyNoMoreInteractions()
228+
}
222229
}
223230

224231
@Test
225232
fun `M do nothing W recordException { isRecording is false }`(@Forgery fakeThrowable: Throwable) {
226233
// Given
227234
testedSpan.end()
228235
val mockAttributes: Attributes = mock()
236+
Mockito.mockStatic(DatadogTracingToolkit::class.java).use { mockedStatic ->
237+
// When
238+
testedSpan.recordException(fakeThrowable, mockAttributes)
229239

230-
// When
231-
testedSpan.recordException(fakeThrowable, mockAttributes)
232-
233-
// Then
234-
verify(mockAgentSpan, never()).addThrowable(fakeThrowable, ErrorPriorities.UNSET)
235-
verifyNoInteractions(mockAttributes)
240+
// Then
241+
mockedStatic.verifyNoMoreInteractions()
242+
}
236243
}
237244

238245
// endregion

features/dd-sdk-android-trace/api/apiSurface

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ object com.datadog.android.trace.internal.DatadogTracingToolkit
3131
fun setTracingSamplingPriorityIfNecessary(com.datadog.android.trace.api.span.DatadogSpanContext)
3232
fun setTraceId128BitGenerationEnabled(com.datadog.android.trace.api.tracer.DatadogTracerBuilder): com.datadog.android.trace.api.tracer.DatadogTracerBuilder
3333
fun setSdkV2Compatible(com.datadog.android.trace.api.tracer.DatadogTracerBuilder): com.datadog.android.trace.api.tracer.DatadogTracerBuilder
34+
fun addThrowable(com.datadog.android.trace.api.span.DatadogSpan, Throwable, Byte)
3435
object com.datadog.android.trace.internal.SpanAttributes
3536
const val DATADOG_INITIAL_CONTEXT: String
3637
fun <T> android.database.sqlite.SQLiteDatabase.transactionTraced(String, Boolean = true, com.datadog.android.trace.api.span.DatadogSpan.(android.database.sqlite.SQLiteDatabase) -> T): T

features/dd-sdk-android-trace/api/dd-sdk-android-trace.api

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ public final class com/datadog/android/trace/internal/DatadogTraceExtKt {
6565
public final class com/datadog/android/trace/internal/DatadogTracingToolkit {
6666
public static final field INSTANCE Lcom/datadog/android/trace/internal/DatadogTracingToolkit;
6767
public static final field spanIdConverter Lcom/datadog/android/trace/internal/DatadogSpanIdConverter;
68+
public static final fun addThrowable (Lcom/datadog/android/trace/api/span/DatadogSpan;Ljava/lang/Throwable;B)V
6869
public final fun getPropagationHelper ()Lcom/datadog/android/trace/internal/DatadogPropagationHelper;
6970
public final fun setSdkV2Compatible (Lcom/datadog/android/trace/api/tracer/DatadogTracerBuilder;)Lcom/datadog/android/trace/api/tracer/DatadogTracerBuilder;
7071
public final fun setTraceId128BitGenerationEnabled (Lcom/datadog/android/trace/api/tracer/DatadogTracerBuilder;)Lcom/datadog/android/trace/api/tracer/DatadogTracerBuilder;

features/dd-sdk-android-trace/src/main/kotlin/com/datadog/android/trace/internal/DatadogSpanAdapter.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,6 @@ internal class DatadogSpanAdapter(
9494
delegate.addThrowable(throwable)
9595
}
9696

97-
override fun addThrowable(throwable: Throwable, errorPriority: Byte) {
98-
delegate.addThrowable(throwable, errorPriority)
99-
}
100-
10197
override fun logThrowable(throwable: Throwable) {
10298
spanLogger.log(throwable, this)
10399
}
@@ -113,4 +109,8 @@ internal class DatadogSpanAdapter(
113109
override fun logAttributes(attributes: Map<String, Any>) {
114110
spanLogger.log(attributes, this)
115111
}
112+
113+
internal fun addThrowable(throwable: Throwable, errorPriority: Byte) {
114+
delegate.addThrowable(throwable, errorPriority)
115+
}
116116
}

features/dd-sdk-android-trace/src/main/kotlin/com/datadog/android/trace/internal/DatadogTracingToolkit.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
package com.datadog.android.trace.internal
77

88
import com.datadog.android.lint.InternalApi
9+
import com.datadog.android.trace.api.span.DatadogSpan
910
import com.datadog.android.trace.api.span.DatadogSpanContext
1011
import com.datadog.android.trace.api.tracer.DatadogTracerBuilder
1112

@@ -57,4 +58,17 @@ object DatadogTracingToolkit {
5758
(builder as? DatadogTracerBuilderAdapter)?.setSdkV2Compatible()
5859
return builder
5960
}
61+
62+
/**
63+
* Associates a throwable with the current span, marking it as an error.
64+
* Note that error flag will be set only if priority is higher than the current one.
65+
*
66+
* @param span The span to associate the throwable with.
67+
* @param throwable The throwable to associate with the current span.
68+
* @param errorPriority The priority level of the error, represented as a byte.
69+
*/
70+
@JvmStatic // this method is called from OTel code, written in java
71+
fun addThrowable(span: DatadogSpan, throwable: Throwable, errorPriority: Byte) {
72+
(span as? DatadogSpanAdapter)?.addThrowable(throwable, errorPriority)
73+
}
6074
}

0 commit comments

Comments
 (0)