Skip to content

Commit 5207bb6

Browse files
committed
Merge branch 'feat/app-start-extension-materialize' into feat/app-start-extension-api
2 parents ca33abd + d2df48b commit 5207bb6

2 files changed

Lines changed: 33 additions & 2 deletions

File tree

sentry-android-core/src/main/java/io/sentry/android/core/ActivityLifecycleIntegration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -351,8 +351,8 @@ private void startTracing(final @NotNull Activity activity) {
351351
transactionOptions);
352352
}
353353

354-
if (isFollowingHeadlessAppStart) {
355-
// Consume the stored headless app-start trace so it isn't reused by another activity.
354+
if (isFollowingHeadlessAppStart || extensionActive) {
355+
// Consume the stored app-start trace so a later activity doesn't reuse it.
356356
AppStartMetrics.getInstance().setAppStartTraceId(null);
357357
AppStartMetrics.getInstance().setAppStartSentryTraceHeader(null);
358358
AppStartMetrics.getInstance().setAppStartBaggageHeader(null);

sentry-android-core/src/test/java/io/sentry/android/core/ActivityLifecycleIntegrationTest.kt

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,37 @@ class ActivityLifecycleIntegrationTest {
384384
)
385385
}
386386

387+
@Test
388+
fun `extended app start trace is not reused by a later activity`() {
389+
val sut =
390+
fixture.getSut {
391+
it.tracesSampleRate = 1.0
392+
it.isEnableStandaloneAppStartTracing = true
393+
}
394+
sut.register(fixture.scopes, fixture.options)
395+
396+
setAppStartTime()
397+
AppStartMetrics.getInstance().appStartExtension.extendAppStart()
398+
399+
val firstActivity = mock<Activity>()
400+
sut.onActivityCreated(firstActivity, fixture.bundle)
401+
val appStartTraceId =
402+
fixture.createdTransactions
403+
.single { it.spanContext.operation == ActivityLifecycleIntegration.STANDALONE_APP_START_OP }
404+
.spanContext
405+
.traceId
406+
407+
AppStartMetrics.getInstance().appStartExtension.finishExtendedAppStart()
408+
AppStartMetrics.getInstance().onAppStartSpansSent()
409+
410+
val secondActivity = mock<Activity>()
411+
sut.onActivityPaused(firstActivity)
412+
sut.onActivityCreated(secondActivity, fixture.bundle)
413+
414+
// The second activity must not continue the already-finished extended app.start trace.
415+
assertNotEquals(appStartTraceId, fixture.createdTransactions.last().spanContext.traceId)
416+
}
417+
387418
@Test
388419
fun `extended standalone app start transaction stays open until finishExtendedAppStart`() {
389420
val sut =

0 commit comments

Comments
 (0)