From 2053cf085aed78c86d696094fee680b73f7acc5a Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Fri, 30 Jun 2023 11:12:51 -0300 Subject: [PATCH] Add retries to CallEventSyncJob. --- .../securesms/jobs/CallSyncEventJob.kt | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/CallSyncEventJob.kt b/app/src/main/java/org/thoughtcrime/securesms/jobs/CallSyncEventJob.kt index 4a971ed0d4..c502708da6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/CallSyncEventJob.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/CallSyncEventJob.kt @@ -86,15 +86,18 @@ class CallSyncEventJob private constructor( override fun onFailure() = Unit + override fun onShouldRetry(e: Exception): Boolean = e is RetryableException + override fun onRun() { val remainingEvents = events.mapNotNull(this::processEvent) - if (remainingEvents.isNotEmpty()) { - warn(TAG, "Failed to send sync messages for ${remainingEvents.size} events.") - } else { - Log.i(TAG, "Successfully sent all sync messages.") - } - events = remainingEvents + if (remainingEvents.isEmpty()) { + Log.i(TAG, "Successfully sent all sync messages.") + } else { + warn(TAG, "Failed to send sync messages for ${remainingEvents.size} events.") + events = remainingEvents + throw RetryableException() + } } private fun processEvent(callSyncEvent: CallSyncEventJobRecord): CallSyncEventJobRecord? { @@ -143,8 +146,6 @@ class CallSyncEventJob private constructor( private fun CallSyncEventJobRecord.deserializeEvent(): CallTable.Event = CallTable.Event.deserialize(event) - override fun onShouldRetry(e: Exception): Boolean = false - class Factory : Job.Factory { override fun create(parameters: Parameters, serializedData: ByteArray?): CallSyncEventJob { val events = CallSyncEventJobData.ADAPTER.decode(serializedData!!).records @@ -155,4 +156,6 @@ class CallSyncEventJob private constructor( ) } } + + private class RetryableException : Exception() }