DRY up the debounce of db extension version increment.

pull/1/head
Matthew Chen 7 years ago
parent 20de087441
commit 29bb69032a

@ -4904,11 +4904,9 @@ typedef enum : NSUInteger {
}]; }];
// Flag to ensure that we only increment once per launch. // Flag to ensure that we only increment once per launch.
static BOOL hasIncrementedDatabaseView = NO; if (hasError) {
if (hasError && !hasIncrementedDatabaseView) {
OWSLogWarn(@"incrementing version of: %@", TSMessageDatabaseViewExtensionName); OWSLogWarn(@"incrementing version of: %@", TSMessageDatabaseViewExtensionName);
[OWSPrimaryStorage incrementVersionOfDatabaseExtension:TSMessageDatabaseViewExtensionName]; [OWSPrimaryStorage incrementVersionOfDatabaseExtension:TSMessageDatabaseViewExtensionName];
hasIncrementedDatabaseView = YES;
} }
// Update the "break" properties (shouldShowDate and unreadIndicator) of the view items. // Update the "break" properties (shouldShowDate and unreadIndicator) of the view items.

@ -880,11 +880,9 @@ NSString *const kArchivedConversationsReuseIdentifier = @"kArchivedConversations
withMappings:self.threadMappings]; withMappings:self.threadMappings];
}]; }];
static BOOL hasIncrementedDatabaseView = NO; if (![thread isKindOfClass:[TSThread class]]) {
if (![thread isKindOfClass:[TSThread class]] && !hasIncrementedDatabaseView) {
OWSLogError(@"Invalid object in thread view: %@", [thread class]); OWSLogError(@"Invalid object in thread view: %@", [thread class]);
[OWSStorage incrementVersionOfDatabaseExtension:TSThreadDatabaseViewExtensionName]; [OWSStorage incrementVersionOfDatabaseExtension:TSThreadDatabaseViewExtensionName];
hasIncrementedDatabaseView = YES;
} }
return thread; return thread;

@ -515,6 +515,20 @@ NSString *const kNSUserDefaults_DatabaseExtensionVersionMap = @"kNSUserDefaults_
{ {
OWSLogError(@"%@", extensionName); OWSLogError(@"%@", extensionName);
// Don't increment version of a given extension more than once
// per launch.
static NSMutableSet<NSString *> *incrementedViewSet = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
incrementedViewSet = [NSMutableSet new];
});
@synchronized(incrementedViewSet) {
if ([incrementedViewSet containsObject:extensionName]) {
OWSLogInfo(@"Ignoring redundant increment: %@", extensionName);
}
[incrementedViewSet addObject:extensionName];
}
NSUserDefaults *appUserDefaults = [NSUserDefaults appUserDefaults]; NSUserDefaults *appUserDefaults = [NSUserDefaults appUserDefaults];
OWSAssertDebug(appUserDefaults); OWSAssertDebug(appUserDefaults);
NSMutableDictionary<NSString *, NSNumber *> *_Nullable versionMap = NSMutableDictionary<NSString *, NSNumber *> *_Nullable versionMap =

Loading…
Cancel
Save