diff options
author | Christian Schneppe <christian@pix-art.de> | 2019-06-22 15:38:54 +0200 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2019-06-22 15:38:54 +0200 |
commit | 9e3a701cb0d84f1314c51dd52b8cd2c311d8b873 (patch) | |
tree | 2557592ad523b867428f386fa49efeb8cca1baea /src/main/java/de/pixart/messenger/services | |
parent | c71aa059f9a344e052f6218132a156acf360be21 (diff) |
performance improvement of message expiry
Diffstat (limited to 'src/main/java/de/pixart/messenger/services')
-rw-r--r-- | src/main/java/de/pixart/messenger/services/XmppConnectionService.java | 12 |
1 files changed, 9 insertions, 3 deletions
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); |