From 73594067a06b86ae975e51d0a59234171d1f33cc Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 26 Oct 2021 10:39:27 -0300 Subject: [PATCH] Reduce GRDB read pool size in NSE. --- NotificationServiceExtension/NSEContext.swift | 6 +++--- .../src/Messages/OWSOutgoingReceiptManager.m | 11 +++++++++++ .../Storage/Database/GRDBDatabaseStorageAdapter.swift | 3 ++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/NotificationServiceExtension/NSEContext.swift b/NotificationServiceExtension/NSEContext.swift index 5e54e4cd08..0774463adc 100644 --- a/NotificationServiceExtension/NSEContext.swift +++ b/NotificationServiceExtension/NSEContext.swift @@ -80,21 +80,21 @@ class NSEContext: NSObject, AppContext { private func applicationWillResignActive(_ notification: NSNotification) { AssertIsOnMainThread() - Logger.info("... memoryUsage: \(LocalDevice.memoryUsage)") + Logger.info("memoryUsage: \(LocalDevice.memoryUsage)") } @objc private func applicationWillTerminate(_ notification: NSNotification) { AssertIsOnMainThread() - Logger.info("... memoryUsage: \(LocalDevice.memoryUsage)") + Logger.info("memoryUsage: \(LocalDevice.memoryUsage)") } @objc private func applicationDidReceiveMemoryWarning(_ notification: NSNotification) { AssertIsOnMainThread() - Logger.info("... memoryUsage: \(LocalDevice.memoryUsage)") + Logger.info("memoryUsage: \(LocalDevice.memoryUsage)") } // MARK: - Unused in this extension diff --git a/SignalServiceKit/src/Messages/OWSOutgoingReceiptManager.m b/SignalServiceKit/src/Messages/OWSOutgoingReceiptManager.m index 0c1755e20f..f65a3f1d99 100644 --- a/SignalServiceKit/src/Messages/OWSOutgoingReceiptManager.m +++ b/SignalServiceKit/src/Messages/OWSOutgoingReceiptManager.m @@ -128,6 +128,7 @@ NSString *NSStringForOWSReceiptType(OWSReceiptType receiptType) if (completion) { completion(); } + [self logMemoryUsage]; return; } @@ -141,6 +142,7 @@ NSString *NSStringForOWSReceiptType(OWSReceiptType receiptType) if (completion) { completion(); } + [self logMemoryUsage]; return; } @@ -155,6 +157,7 @@ NSString *NSStringForOWSReceiptType(OWSReceiptType receiptType) if (completion) { completion(); } + [self logMemoryUsage]; return; } @@ -181,6 +184,14 @@ NSString *NSStringForOWSReceiptType(OWSReceiptType receiptType) }); } +- (void)logMemoryUsage { + if (SSKDebugFlags.internalLogging) { + dispatch_async(self.serialQueue, ^{ + OWSLogVerbose(@"memoryUsage: %@", LocalDevice.memoryUsage); + }); + } +} + - (NSArray *)sendReceiptsForReceiptType:(OWSReceiptType)receiptType { __block NSDictionary *queuedReceiptMap; [self.databaseStorage readWithBlock:^(SDSAnyReadTransaction *transaction) { diff --git a/SignalServiceKit/src/Storage/Database/GRDBDatabaseStorageAdapter.swift b/SignalServiceKit/src/Storage/Database/GRDBDatabaseStorageAdapter.swift index 52728c1436..4051d05b2e 100644 --- a/SignalServiceKit/src/Storage/Database/GRDBDatabaseStorageAdapter.swift +++ b/SignalServiceKit/src/Storage/Database/GRDBDatabaseStorageAdapter.swift @@ -889,7 +889,8 @@ private struct GRDBStorage { } // Useful when your app opens multiple databases configuration.label = "GRDB Storage" - configuration.maximumReaderCount = 10 // The default is 5 + let isMainApp = CurrentAppContext().isMainApp + configuration.maximumReaderCount = isMainApp ? 10 : 5 // The default is 5 configuration.busyMode = .callback({ (retryCount: Int) -> Bool in // sleep N milliseconds let millis = 25