fix: removing debug logs, adding failure error handling logs for expiry message updater, properly using the message thread ID created for the expiring messages. Process the non-thread messages properly with await in BatchMessageReceiveJob

This commit is contained in:
0x330a 2023-05-02 16:30:35 +10:00
parent 216070fa5d
commit f7b4fe216f
5 changed files with 4 additions and 14 deletions

View File

@ -96,7 +96,6 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co
// TODO: maybe add time here from formation / creation message // TODO: maybe add time here from formation / creation message
override fun threadCreated(address: Address, threadId: Long) { override fun threadCreated(address: Address, threadId: Long) {
if (!getRecipientApproved(address)) return // don't store unapproved / message requests if (!getRecipientApproved(address)) return // don't store unapproved / message requests
Log.d("Loki-DBG", "creating thread for $address\nExecution context:\n${Thread.currentThread().stackTrace.joinToString("\n")}")
val volatile = configFactory.convoVolatile ?: return val volatile = configFactory.convoVolatile ?: return
if (address.isGroup) { if (address.isGroup) {
@ -135,7 +134,6 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co
} }
override fun threadDeleted(address: Address, threadId: Long) { override fun threadDeleted(address: Address, threadId: Long) {
Log.d("Loki-DBG", "deleting thread for $address\nExecution context:\n${Thread.currentThread().stackTrace.joinToString("\n")}")
val volatile = configFactory.convoVolatile ?: return val volatile = configFactory.convoVolatile ?: return
if (address.isGroup) { if (address.isGroup) {
@ -1100,7 +1098,6 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co
setPinned(conversationThreadId, contact.priority == ConfigBase.PRIORITY_PINNED) setPinned(conversationThreadId, contact.priority == ConfigBase.PRIORITY_PINNED)
} }
} }
Log.d("Loki-DBG", "Updated contact $contact")
} }
} }

View File

@ -315,7 +315,6 @@ public class ThreadDatabase extends Database {
ContentValues contentValues = new ContentValues(1); ContentValues contentValues = new ContentValues(1);
contentValues.put(READ, 1); contentValues.put(READ, 1);
Log.d("Loki-DBG", "setRead "+threadId+" @ "+lastReadTime);
contentValues.put(LAST_SEEN, lastReadTime); contentValues.put(LAST_SEEN, lastReadTime);
SQLiteDatabase db = databaseHelper.getWritableDatabase(); SQLiteDatabase db = databaseHelper.getWritableDatabase();
@ -336,7 +335,6 @@ public class ThreadDatabase extends Database {
contentValues.put(UNREAD_MENTION_COUNT, 0); contentValues.put(UNREAD_MENTION_COUNT, 0);
if (lastSeen) { if (lastSeen) {
Log.d("Loki-DBG", "setRead "+threadId+" @ current time");
contentValues.put(LAST_SEEN, SnodeAPI.getNowWithOffset()); contentValues.put(LAST_SEEN, SnodeAPI.getNowWithOffset());
} }

View File

@ -153,7 +153,7 @@ public class ExpiringMessageManager implements SSKEnvironment.MessageExpirationM
try { try {
OutgoingExpirationUpdateMessage timerUpdateMessage = new OutgoingExpirationUpdateMessage(recipient, sentTimestamp, duration * 1000L, groupId); OutgoingExpirationUpdateMessage timerUpdateMessage = new OutgoingExpirationUpdateMessage(recipient, sentTimestamp, duration * 1000L, groupId);
mmsDatabase.insertSecureDecryptedMessageOutbox(timerUpdateMessage, -1, sentTimestamp, true); mmsDatabase.insertSecureDecryptedMessageOutbox(timerUpdateMessage, message.getThreadID(), sentTimestamp, true);
if (groupId != null) { if (groupId != null) {
// we need the group ID as recipient for setExpireMessages below // we need the group ID as recipient for setExpireMessages below
@ -163,7 +163,7 @@ public class ExpiringMessageManager implements SSKEnvironment.MessageExpirationM
MessagingModuleConfiguration.getShared().getStorage().setExpirationTimer(recipient.getAddress().serialize(), duration); MessagingModuleConfiguration.getShared().getStorage().setExpirationTimer(recipient.getAddress().serialize(), duration);
} catch (MmsException | IOException ioe) { } catch (MmsException | IOException ioe) {
Log.e("Loki", "Failed to insert expiration update message."); Log.e("Loki", "Failed to insert expiration update message.", ioe);
} }
} }

View File

@ -31,7 +31,7 @@ import java.util.Timer
object ConfigurationMessageUtilities { object ConfigurationMessageUtilities {
val debouncer = WindowDebouncer(3000, Timer()) private val debouncer = WindowDebouncer(3000, Timer())
private fun scheduleConfigSync(userPublicKey: String) { private fun scheduleConfigSync(userPublicKey: String) {
debouncer.publish { debouncer.publish {
@ -41,11 +41,9 @@ object ConfigurationMessageUtilities {
val currentStorageJob = storage.getConfigSyncJob(ourDestination) val currentStorageJob = storage.getConfigSyncJob(ourDestination)
if (currentStorageJob != null) { if (currentStorageJob != null) {
(currentStorageJob as ConfigurationSyncJob).shouldRunAgain.set(true) (currentStorageJob as ConfigurationSyncJob).shouldRunAgain.set(true)
Log.d("Loki-DBG", "Not scheduling another one")
return@publish return@publish
} }
val newConfigSync = ConfigurationSyncJob(ourDestination) val newConfigSync = ConfigurationSyncJob(ourDestination)
Log.d("Loki", "Scheduling new ConfigurationSyncJob")
JobQueue.shared.add(newConfigSync) JobQueue.shared.add(newConfigSync)
} }
} }

View File

@ -156,7 +156,6 @@ class BatchMessageReceiveJob(
val messageIds = linkedMapOf<Long, Pair<Boolean, Boolean>>() val messageIds = linkedMapOf<Long, Pair<Boolean, Boolean>>()
val myLastSeen = storage.getLastSeen(threadId) val myLastSeen = storage.getLastSeen(threadId)
var newLastSeen = if (myLastSeen == -1L) 0 else myLastSeen var newLastSeen = if (myLastSeen == -1L) 0 else myLastSeen
Log.d("Loki-DBG", "myLastSeen = $newLastSeen")
messages.forEach { (parameters, message, proto) -> messages.forEach { (parameters, message, proto) ->
try { try {
when (message) { when (message) {
@ -226,11 +225,9 @@ class BatchMessageReceiveJob(
// last seen will be the current last seen if not changed (re-computes the read counts for thread record) // last seen will be the current last seen if not changed (re-computes the read counts for thread record)
// might have been updated from a different thread at this point // might have been updated from a different thread at this point
val currentLastSeen = storage.getLastSeen(threadId).let { if (it == -1L) 0 else it } val currentLastSeen = storage.getLastSeen(threadId).let { if (it == -1L) 0 else it }
Log.d("Loki-DBG", "currentLastSeen = $currentLastSeen")
if (currentLastSeen > newLastSeen) { if (currentLastSeen > newLastSeen) {
newLastSeen = currentLastSeen newLastSeen = currentLastSeen
} }
Log.d("Loki-DBG", "newLastSeen = $newLastSeen")
storage.markConversationAsRead(threadId, newLastSeen) storage.markConversationAsRead(threadId, newLastSeen)
storage.updateThread(threadId, true) storage.updateThread(threadId, true)
SSKEnvironment.shared.notificationManager.updateNotification(context, threadId) SSKEnvironment.shared.notificationManager.updateNotification(context, threadId)
@ -243,7 +240,7 @@ class BatchMessageReceiveJob(
} }
// await all thread processing // await all thread processing
deferredThreadMap.awaitAll() deferredThreadMap.awaitAll()
processMessages(NO_THREAD_MAPPING, noThreadMessages) processMessages(NO_THREAD_MAPPING, noThreadMessages).await()
} }
if (failures.isEmpty()) { if (failures.isEmpty()) {
handleSuccess(dispatcherName) handleSuccess(dispatcherName)