From 96b00b3e2dfa1c5b7140b8f068177c8fe6680c69 Mon Sep 17 00:00:00 2001 From: Scott Nonnenberg Date: Tue, 8 Aug 2017 09:58:44 -0700 Subject: [PATCH] Throttle expiring messages data query and deletion I believe this to be the reason behind some of the high resource usage on startup. If a lot of read receipts come in for disappearing messages, this method can be called many, many times very quickly. FREEBIE --- js/expiring_messages.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/js/expiring_messages.js b/js/expiring_messages.js index 3cdf2fbd7..ed3e15faa 100644 --- a/js/expiring_messages.js +++ b/js/expiring_messages.js @@ -17,7 +17,7 @@ // the expiration before the message is removed from the database. message.destroy(); }); - expired.on('reset', checkExpiringMessages); + expired.on('reset', throttledCheckExpiringMessages); expired.fetchExpired(); } @@ -38,13 +38,14 @@ }); expiring.fetchNextExpiring(); } + var throttledCheckExpiringMessages = _.throttle(checkExpiringMessages, 1000); Whisper.ExpiringMessagesListener = { init: function(events) { checkExpiringMessages(); - events.on('timetravel', checkExpiringMessages); + events.on('timetravel', throttledCheckExpiringMessages); }, - update: checkExpiringMessages + update: throttledCheckExpiringMessages }; var TimerOption = Backbone.Model.extend({