From 9e3a701cb0d84f1314c51dd52b8cd2c311d8b873 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sat, 22 Jun 2019 15:38:54 +0200 Subject: performance improvement of message expiry --- .../de/pixart/messenger/services/XmppConnectionService.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/main/java/de/pixart/messenger/services/XmppConnectionService.java') diff --git a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java index b57d9846f..c0c6c91d9 100644 --- a/src/main/java/de/pixart/messenger/services/XmppConnectionService.java +++ b/src/main/java/de/pixart/messenger/services/XmppConnectionService.java @@ -79,6 +79,7 @@ import java.util.Set; import java.util.WeakHashMap; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicLong; @@ -4871,16 +4872,21 @@ public class XmppConnectionService extends Service { private void expireOldMessages(long timestamp, boolean stepped) { if (stepped) { - final int year = 365; + final long expiredMessagesCount = databaseBackend.countExpireOldMessages(timestamp); + final long days = TimeUnit.MILLISECONDS.toDays(Calendar.getInstance().getTimeInMillis() - databaseBackend.getOldestMessages()); final long day = (long) 24 * 60 * 60 * 1000; int count = 0; - while (count <= year) { + int messagesCount = 0; + while (count <= days) { try { - databaseBackend.expireOldMessages(timestamp - ((year - count) * day)); + messagesCount += databaseBackend.expireOldMessages(timestamp - ((days - count) * day)); } catch (Exception e) { e.printStackTrace(); } count++; + if (expiredMessagesCount == messagesCount) { + break; + } } } else { databaseBackend.expireOldMessages(timestamp); -- cgit v1.2.3