From 2ff2d7dd238786bdf15ee6be9f1f409e8ec0d76e Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Thu, 3 Oct 2019 14:08:52 -0300 Subject: [PATCH] Log database file sizes after YDB-to-GRDB migration. --- .../Database/GRDBDatabaseStorageAdapter.swift | 32 ---------- .../Storage/Database/SDSDatabaseStorage.swift | 60 ++++++++++++++++--- .../Database/YAPDBStorageAdapter.swift | 16 +++++ .../src/Storage/StorageCoordinator.m | 4 ++ 4 files changed, 71 insertions(+), 41 deletions(-) diff --git a/SignalServiceKit/src/Storage/Database/GRDBDatabaseStorageAdapter.swift b/SignalServiceKit/src/Storage/Database/GRDBDatabaseStorageAdapter.swift index 88be97417c..8c0d2fea38 100644 --- a/SignalServiceKit/src/Storage/Database/GRDBDatabaseStorageAdapter.swift +++ b/SignalServiceKit/src/Storage/Database/GRDBDatabaseStorageAdapter.swift @@ -666,38 +666,6 @@ private struct GRDBKeySpecSource { // MARK: - -@objc -public extension SDSDatabaseStorage { - var databaseFileSize: UInt64 { - switch dataStoreForReporting { - case .grdb: - return grdbStorage.databaseFileSize - case .ydb: - return OWSPrimaryStorage.shared?.databaseFileSize() ?? 0 - } - } - - var databaseWALFileSize: UInt64 { - switch dataStoreForReporting { - case .grdb: - return grdbStorage.databaseWALFileSize - case .ydb: - return OWSPrimaryStorage.shared?.databaseWALFileSize() ?? 0 - } - } - - var databaseSHMFileSize: UInt64 { - switch dataStoreForReporting { - case .grdb: - return grdbStorage.databaseSHMFileSize - case .ydb: - return OWSPrimaryStorage.shared?.databaseSHMFileSize() ?? 0 - } - } -} - -// MARK: - - extension GRDBDatabaseStorageAdapter { var databaseFilePath: String { return databaseUrl.path diff --git a/SignalServiceKit/src/Storage/Database/SDSDatabaseStorage.swift b/SignalServiceKit/src/Storage/Database/SDSDatabaseStorage.swift index 7caf0d6886..c5d116e094 100644 --- a/SignalServiceKit/src/Storage/Database/SDSDatabaseStorage.swift +++ b/SignalServiceKit/src/Storage/Database/SDSDatabaseStorage.swift @@ -332,15 +332,6 @@ public class SDSDatabaseStorage: SDSTransactable { NotificationCenter.default.postNotificationNameAsync(SDSDatabaseStorage.didReceiveCrossProcessNotification, object: nil) } - // MARK: - Misc. - - @objc - public func logFileSizes() { - Logger.info("Database : \(databaseFileSize)") - Logger.info("\t WAL file size: \(databaseWALFileSize)") - Logger.info("\t SHM file size: \(databaseSHMFileSize)") - } - // MARK: - Generic Observation @objc(addDatabaseStorageObserver:) @@ -634,3 +625,54 @@ public class SDS: NSObject { return SDS.fitsInInt64(nsNumber: value) } } + +// MARK: - + +@objc +public extension SDSDatabaseStorage { + func logFileSizes() { + Logger.info("Database : \(databaseFileSize)") + Logger.info("\t WAL file size: \(databaseWALFileSize)") + Logger.info("\t SHM file size: \(databaseSHMFileSize)") + } + + func logAllFileSizes() { + if canLoadYdb { + Logger.info("YDB Database : \(yapStorage.databaseFileSize)") + Logger.info("\t YDB WAL file size: \(yapStorage.databaseWALFileSize)") + Logger.info("\t YDB SHM file size: \(yapStorage.databaseSHMFileSize)") + } + if canLoadGrdb { + Logger.info("GDRB Database : \(grdbStorage.databaseFileSize)") + Logger.info("\t GDRB WAL file size: \(grdbStorage.databaseWALFileSize)") + Logger.info("\t GDRB SHM file size: \(grdbStorage.databaseSHMFileSize)") + } + } + + var databaseFileSize: UInt64 { + switch dataStoreForReporting { + case .grdb: + return grdbStorage.databaseFileSize + case .ydb: + return yapStorage.databaseFileSize + } + } + + var databaseWALFileSize: UInt64 { + switch dataStoreForReporting { + case .grdb: + return grdbStorage.databaseWALFileSize + case .ydb: + return yapStorage.databaseWALFileSize + } + } + + var databaseSHMFileSize: UInt64 { + switch dataStoreForReporting { + case .grdb: + return grdbStorage.databaseSHMFileSize + case .ydb: + return yapStorage.databaseSHMFileSize + } + } +} diff --git a/SignalServiceKit/src/Storage/Database/YAPDBStorageAdapter.swift b/SignalServiceKit/src/Storage/Database/YAPDBStorageAdapter.swift index 9a1ffb06a9..2837c3d4d4 100644 --- a/SignalServiceKit/src/Storage/Database/YAPDBStorageAdapter.swift +++ b/SignalServiceKit/src/Storage/Database/YAPDBStorageAdapter.swift @@ -47,3 +47,19 @@ extension YAPDBStorageAdapter: SDSDatabaseStorageAdapter { return YAPDBDatabaseQueue(databaseConnection: storage.newDatabaseConnection()) } } + +// MARK: - Reporting + +extension YAPDBStorageAdapter { + var databaseFileSize: UInt64 { + return OWSPrimaryStorage.shared?.databaseFileSize() ?? 0 + } + + var databaseWALFileSize: UInt64 { + return OWSPrimaryStorage.shared?.databaseWALFileSize() ?? 0 + } + + var databaseSHMFileSize: UInt64 { + return OWSPrimaryStorage.shared?.databaseSHMFileSize() ?? 0 + } +} diff --git a/SignalServiceKit/src/Storage/StorageCoordinator.m b/SignalServiceKit/src/Storage/StorageCoordinator.m index ec776a7f85..f93ecfe64a 100644 --- a/SignalServiceKit/src/Storage/StorageCoordinator.m +++ b/SignalServiceKit/src/Storage/StorageCoordinator.m @@ -138,6 +138,8 @@ NSString *NSStringFromStorageCoordinatorState(StorageCoordinatorState value) OWSAssert(self.state == StorageCoordinatorStateBeforeYDBToGRDBMigration); self.state = StorageCoordinatorStateDuringYDBToGRDBMigration; + + [self.databaseStorage logAllFileSizes]; OWSLogInfo(@"state: %@", NSStringFromStorageCoordinatorState(self.state)); } @@ -151,6 +153,8 @@ NSString *NSStringFromStorageCoordinatorState(StorageCoordinatorState value) OWSLogInfo(@"state: %@", NSStringFromStorageCoordinatorState(self.state)); + [self.databaseStorage logAllFileSizes]; + // Don't set this flag for "throwaway" migrations. if (SSKFeatureFlags.storageMode == StorageModeGrdb) { [SSKPreferences setIsYdbMigrated:YES];