diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/metrics/SyncDurationMetricPlugin.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/metrics/SyncDurationMetricPlugin.kt index 79ece002e9..e54eb3cccf 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/metrics/SyncDurationMetricPlugin.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/metrics/SyncDurationMetricPlugin.kt @@ -29,4 +29,6 @@ interface SyncDurationMetricPlugin : SpannableMetricPlugin { override fun logTransaction(message: String?) { Timber.tag(loggerTag.value).v("## syncResponseHandler() : $message") } + + fun shouldReport(isInitialSync: Boolean, isAfterPause: Boolean): Boolean = true } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/sync/SyncResponseHandler.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/sync/SyncResponseHandler.kt index 7894d1de2e..a9de4d3a3b 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/sync/SyncResponseHandler.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/sync/SyncResponseHandler.kt @@ -68,12 +68,13 @@ internal class SyncResponseHandler @Inject constructor( suspend fun handleResponse( syncResponse: SyncResponse, fromToken: String?, + afterPause: Boolean, reporter: ProgressReporter? ) { val isInitialSync = fromToken == null Timber.v("Start handling sync, is InitialSync: $isInitialSync") - relevantPlugins.measureSpannableMetric { + relevantPlugins.filter { it.shouldReport(isInitialSync, afterPause) }.measureSpannableMetric { startCryptoService(isInitialSync) // Handle the to device events before the room ones diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/sync/SyncTask.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/sync/SyncTask.kt index 8a287fb0b4..86346cabcf 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/sync/SyncTask.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/sync/SyncTask.kt @@ -151,7 +151,7 @@ internal class DefaultSyncTask @Inject constructor( syncStatisticsData.requestInitSyncTime = SystemClock.elapsedRealtime() syncStatisticsData.downloadInitSyncTime = syncStatisticsData.requestInitSyncTime logDuration("INIT_SYNC Database insertion", loggerTag, clock) { - syncResponseHandler.handleResponse(syncResponse, token, syncRequestStateTracker) + syncResponseHandler.handleResponse(syncResponse, null, afterPause = true, syncRequestStateTracker) } syncResponseToReturn = syncResponse } @@ -184,7 +184,7 @@ internal class DefaultSyncTask @Inject constructor( toDevice = nbToDevice, ) ) - syncResponseHandler.handleResponse(syncResponse, token, null) + syncResponseHandler.handleResponse(syncResponse, token, afterPause = params.afterPause, null) syncResponseToReturn = syncResponse Timber.tag(loggerTag.value).d("Incremental sync done") syncRequestStateTracker.setSyncRequestState(SyncRequestState.IncrementalSyncDone) @@ -264,7 +264,7 @@ internal class DefaultSyncTask @Inject constructor( Timber.tag(loggerTag.value).d("INIT_SYNC $nbOfJoinedRooms rooms, $nbOfJoinedRoomsInFile ephemeral stored into files") logDuration("INIT_SYNC Database insertion", loggerTag, clock) { - syncResponseHandler.handleResponse(syncResponse, null, syncRequestStateTracker) + syncResponseHandler.handleResponse(syncResponse, null, afterPause = true, syncRequestStateTracker) } initialSyncStatusRepository.setStep(InitialSyncStatus.STEP_SUCCESS) syncResponse diff --git a/vector/src/main/java/im/vector/app/features/analytics/metrics/sentry/SentrySyncDurationMetrics.kt b/vector/src/main/java/im/vector/app/features/analytics/metrics/sentry/SentrySyncDurationMetrics.kt index 7de20720fb..04f4d38769 100644 --- a/vector/src/main/java/im/vector/app/features/analytics/metrics/sentry/SentrySyncDurationMetrics.kt +++ b/vector/src/main/java/im/vector/app/features/analytics/metrics/sentry/SentrySyncDurationMetrics.kt @@ -34,6 +34,11 @@ class SentrySyncDurationMetrics @Inject constructor() : SyncDurationMetricPlugin // Stacks to keep spans in LIFO order. private var spans: Stack = Stack() + override fun shouldReport(isInitialSync: Boolean, isAfterPause: Boolean): Boolean { + // Report only for initial sync and for sync after pause + return isInitialSync || isAfterPause + } + /** * Starts the span for a sub-task. *