mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-02 12:07:28 +00:00
Allow bridging Sentry spans to the SDK ones.
Add distributed tracing for `Room.timelineWithConfiguration`, so we can inspect the associated Rust trace.
This commit is contained in:
committed by
Jorge Martin Espinosa
parent
6c404fda36
commit
bd427735ff
+16
@@ -20,7 +20,10 @@ import io.element.android.libraries.di.annotations.AppCoroutineScope
|
||||
import io.element.android.libraries.sessionstorage.api.observer.SessionListener
|
||||
import io.element.android.libraries.sessionstorage.api.observer.SessionObserver
|
||||
import io.element.android.services.analytics.api.AnalyticsLongRunningTransaction
|
||||
import io.element.android.services.analytics.api.AnalyticsSdkSpan
|
||||
import io.element.android.services.analytics.api.AnalyticsSdkSpanFactory
|
||||
import io.element.android.services.analytics.api.AnalyticsService
|
||||
import io.element.android.services.analytics.api.NoopAnalyticsSdkSpan
|
||||
import io.element.android.services.analytics.api.NoopAnalyticsTransaction
|
||||
import io.element.android.services.analytics.impl.log.analyticsTag
|
||||
import io.element.android.services.analytics.impl.store.AnalyticsStore
|
||||
@@ -43,6 +46,7 @@ class DefaultAnalyticsService(
|
||||
@AppCoroutineScope
|
||||
private val coroutineScope: CoroutineScope,
|
||||
private val sessionObserver: SessionObserver,
|
||||
private val analyticsSdkSpanFactory: AnalyticsSdkSpanFactory,
|
||||
) : AnalyticsService, SessionListener {
|
||||
private val pendingLongRunningTransactions = ConcurrentHashMap<AnalyticsLongRunningTransaction, AnalyticsTransaction>()
|
||||
|
||||
@@ -171,4 +175,16 @@ class DefaultAnalyticsService(
|
||||
override fun removeLongRunningTransaction(longRunningTransaction: AnalyticsLongRunningTransaction): AnalyticsTransaction? {
|
||||
return pendingLongRunningTransactions.remove(longRunningTransaction)
|
||||
}
|
||||
|
||||
override fun enterSdkSpan(name: String?, parentTraceId: String?): AnalyticsSdkSpan {
|
||||
return if (userConsent.get()) {
|
||||
if (name != null) {
|
||||
analyticsSdkSpanFactory.create(name, parentTraceId)
|
||||
} else {
|
||||
analyticsSdkSpanFactory.bridge(parentTraceId)
|
||||
}.apply { enter() }
|
||||
} else {
|
||||
NoopAnalyticsSdkSpan
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
@@ -21,6 +21,7 @@ import io.element.android.libraries.sessionstorage.api.observer.SessionObserver
|
||||
import io.element.android.libraries.sessionstorage.test.observer.NoOpSessionObserver
|
||||
import io.element.android.services.analytics.impl.store.AnalyticsStore
|
||||
import io.element.android.services.analytics.impl.store.FakeAnalyticsStore
|
||||
import io.element.android.services.analytics.test.FakeAnalyticsSdkSpanFactory
|
||||
import io.element.android.services.analyticsproviders.api.AnalyticsProvider
|
||||
import io.element.android.services.analyticsproviders.test.FakeAnalyticsProvider
|
||||
import io.element.android.tests.testutils.lambda.lambdaRecorder
|
||||
@@ -278,6 +279,7 @@ class DefaultAnalyticsServiceTest {
|
||||
analyticsStore = analyticsStore,
|
||||
coroutineScope = coroutineScope,
|
||||
sessionObserver = sessionObserver,
|
||||
analyticsSdkSpanFactory = FakeAnalyticsSdkSpanFactory(),
|
||||
).also {
|
||||
// Wait for the service to be ready
|
||||
delay(1)
|
||||
|
||||
Reference in New Issue
Block a user