Respond to CR.

pull/1/head
Matthew Chen 6 years ago
parent 67f2d6608f
commit aa35594ad5

@ -120,12 +120,14 @@ NS_ASSUME_NONNULL_BEGIN
}]];
#endif
[items addObject:[OWSTableItem itemWithTitle:@"Increment Database Extension Versions"
actionBlock:^() {
for (NSString *extensionName in ExtensionNamesForPrimaryStorage()) {
[OWSStorage incrementVersionOfDatabaseExtension:extensionName];
}
}]];
[items
addObject:[OWSTableItem
itemWithTitle:@"Increment Database Extension Versions"
actionBlock:^() {
for (NSString *extensionName in OWSPrimaryStorage.sharedManager.registeredExtensionNames) {
[OWSStorage incrementVersionOfDatabaseExtension:extensionName];
}
}]];
return [OWSTableSection sectionWithTitle:self.name items:items];
}

@ -6,8 +6,6 @@
NS_ASSUME_NONNULL_BEGIN
NSArray<NSString *> *ExtensionNamesForPrimaryStorage();
@interface OWSPrimaryStorage : OWSStorage
- (instancetype)init NS_UNAVAILABLE;

@ -44,7 +44,7 @@ void RunAsyncRegistrationsForStorage(OWSStorage *storage, dispatch_block_t compl
[TSDatabaseView asyncRegisterThreadDatabaseView:storage];
[TSDatabaseView asyncRegisterUnreadDatabaseView:storage];
[storage asyncRegisterExtension:[TSDatabaseSecondaryIndexes registerTimeStampIndex]
withName:[self registerTimeStampIndexExtensionName]];
withName:[TSDatabaseSecondaryIndexes registerTimeStampIndexExtensionName]];
[OWSMessageReceiver asyncRegisterDatabaseExtension:storage];
[OWSBatchMessageProcessor asyncRegisterDatabaseExtension:storage];
@ -64,78 +64,13 @@ void RunAsyncRegistrationsForStorage(OWSStorage *storage, dispatch_block_t compl
[TSDatabaseView asyncRegisterLazyRestoreAttachmentsDatabaseView:storage completion:completion];
}
extern NSString *const TSThreadOutgoingMessageDatabaseViewExtensionName;
extern NSString *const TSUnseenDatabaseViewExtensionName;
extern NSString *const TSThreadSpecialMessagesDatabaseViewExtensionName;
NSArray<NSString *> *ExtensionNamesForPrimaryStorage()
{
// This should 1:1 correspond to the database view registrations
// done in RunSyncRegistrationsForStorage() and
// RunAsyncRegistrationsForStorage().
return @[
// We don't need to verify the cross process notifier.
// [TSDatabaseView registerCrossProcessNotifier:storage];
// [TSDatabaseView asyncRegisterThreadInteractionsDatabaseView:storage];
TSMessageDatabaseViewExtensionName,
// [TSDatabaseView asyncRegisterThreadDatabaseView:storage];
TSThreadDatabaseViewExtensionName,
// [TSDatabaseView asyncRegisterUnreadDatabaseView:storage];
TSUnreadDatabaseViewExtensionName,
// [storage asyncRegisterExtension:[TSDatabaseSecondaryIndexes registerTimeStampIndex] withName:[self
// registerTimeStampIndexExtensionName]];
[self registerTimeStampIndexExtensionName],
// [OWSMessageReceiver asyncRegisterDatabaseExtension:storage];
[OWSMessageReceiver databaseExtensionName],
// [OWSBatchMessageProcessor asyncRegisterDatabaseExtension:storage];
[OWSBatchMessageProcessor databaseExtensionName],
// [TSDatabaseView asyncRegisterUnseenDatabaseView:storage];
TSUnseenDatabaseViewExtensionName,
// [TSDatabaseView asyncRegisterThreadOutgoingMessagesDatabaseView:storage];
TSThreadOutgoingMessageDatabaseViewExtensionName,
// [TSDatabaseView asyncRegisterThreadSpecialMessagesDatabaseView:storage];
TSThreadSpecialMessagesDatabaseViewExtensionName,
// [OWSIncomingMessageFinder asyncRegisterExtensionWithPrimaryStorage:storage];
[OWSIncomingMessageFinder databaseExtensionName],
// [TSDatabaseView asyncRegisterSecondaryDevicesDatabaseView:storage];
TSSecondaryDevicesDatabaseViewExtensionName,
// [OWSDisappearingMessagesFinder asyncRegisterDatabaseExtensions:storage];
[OWSDisappearingMessagesFinder databaseExtensionName],
// [OWSFailedMessagesJob asyncRegisterDatabaseExtensionsWithPrimaryStorage:storage];
[OWSFailedMessagesJob databaseExtensionName],
// [OWSFailedAttachmentDownloadsJob asyncRegisterDatabaseExtensionsWithPrimaryStorage:storage];
[OWSFailedAttachmentDownloadsJob databaseExtensionName],
// [OWSMediaGalleryFinder asyncRegisterDatabaseExtensionsWithPrimaryStorage:storage];
[OWSMediaGalleryFinder databaseExtensionName],
// NOTE: Always pass the completion to the _LAST_ of the async database
// view registrations.
// [TSDatabaseView asyncRegisterLazyRestoreAttachmentsDatabaseView:storage completion:completion];
TSLazyRestoreAttachmentsDatabaseViewExtensionName,
];
}
void VerifyRegistrationsForPrimaryStorage(OWSStorage *storage)
{
OWSCAssert(storage);
[[storage newDatabaseConnection] asyncReadWithBlock:^(YapDatabaseReadTransaction *transaction) {
for (NSString *extensionName in ExtensionNamesForPrimaryStorage()) {
for (NSString *extensionName in storage.registeredExtensionNames) {
DDLogVerbose(@"Verifying database extension: %@", extensionName);
YapDatabaseViewTransaction *_Nullable viewTransaction = [transaction ext:extensionName];
if (!viewTransaction) {
OWSProdLogAndCFail(

@ -77,6 +77,8 @@ typedef void (^OWSStorageMigrationBlock)(void);
- (nullable id)registeredExtension:(NSString *)extensionName;
- (NSArray<NSString *> *)registeredExtensionNames;
#pragma mark -
- (unsigned long long)databaseFileSize;

@ -241,6 +241,8 @@ NSString *const kNSUserDefaults_DatabaseExtensionVersionMap = @"kNSUserDefaults_
@property (atomic, nullable) YapDatabase *database;
@property (nonatomic) NSMutableArray<NSString *> *extensionNames;
@end
#pragma mark -
@ -256,6 +258,8 @@ NSString *const kNSUserDefaults_DatabaseExtensionVersionMap = @"kNSUserDefaults_
selector:@selector(resetStorage)
name:OWSResetStorageNotification
object:nil];
self.extensionNames = [NSMutableArray new];
}
return self;
@ -549,6 +553,9 @@ NSString *const kNSUserDefaults_DatabaseExtensionVersionMap = @"kNSUserDefaults_
{
extension = [self updateExtensionVersion:extension withName:extensionName];
OWSAssert(![self.extensionNames containsObject:extensionName]);
[self.extensionNames addObject:extensionName];
return [self.database registerExtension:extension withName:extensionName];
}
@ -564,6 +571,9 @@ NSString *const kNSUserDefaults_DatabaseExtensionVersionMap = @"kNSUserDefaults_
{
extension = [self updateExtensionVersion:extension withName:extensionName];
OWSAssert(![self.extensionNames containsObject:extensionName]);
[self.extensionNames addObject:extensionName];
[self.database asyncRegisterExtension:extension
withName:extensionName
completionBlock:^(BOOL ready) {
@ -586,6 +596,11 @@ NSString *const kNSUserDefaults_DatabaseExtensionVersionMap = @"kNSUserDefaults_
return [self.database registeredExtension:extensionName];
}
- (NSArray<NSString *> *)registeredExtensionNames
{
return [self.extensionNames copy];
}
#pragma mark - Password
+ (void)deleteDatabaseFiles

Loading…
Cancel
Save