Merge branch 'charlesmchen/deserializationLogging'

pull/1/head
Matthew Chen 7 years ago
commit 56dfc6ffab

@ -1 +1 @@
Subproject commit 9f01282113e10d50ff87e76ee5fa8d2c09d19f7f Subproject commit 5caa906cfd9c24f464247747004cc8335b96040c

@ -212,6 +212,8 @@ NSString *const kNSUserDefaults_DatabaseExtensionVersionMap = @"kNSUserDefaults_
- (void)encodeWithCoder:(NSCoder *)aCoder - (void)encodeWithCoder:(NSCoder *)aCoder
{ {
OWSRaiseException(
@"OWSStorageExceptionName_SaveToUnknownCollection", @"Tried to save object from unknown collection");
} }
@end @end
@ -230,8 +232,8 @@ NSString *const kNSUserDefaults_DatabaseExtensionVersionMap = @"kNSUserDefaults_
cannotDecodeObjectOfClassName:(NSString *)name cannotDecodeObjectOfClassName:(NSString *)name
originalClasses:(NSArray<NSString *> *)classNames originalClasses:(NSArray<NSString *> *)classNames
{ {
DDLogError(@"%@ Could not decode object: %@", self.logTag, name); OWSProdLogAndFail(@"%@ Could not decode object: %@", self.logTag, name);
OWSProdError([OWSAnalyticsEvents storageErrorCouldNotDecodeClass]); OWSProdCritical([OWSAnalyticsEvents storageErrorCouldNotDecodeClass]);
return [OWSUnknownDBObject class]; return [OWSUnknownDBObject class];
} }
@ -458,7 +460,8 @@ NSString *const kNSUserDefaults_DatabaseExtensionVersionMap = @"kNSUserDefaults_
return [unarchiver decodeObjectForKey:@"root"]; return [unarchiver decodeObjectForKey:@"root"];
} @catch (NSException *exception) { } @catch (NSException *exception) {
// Sync log in case we bail. // Sync log in case we bail.
OWSProdError([OWSAnalyticsEvents storageErrorDeserialization]); OWSProdLogAndFail(@"%@ error deserializing object: %@", self.logTag, collection);
OWSProdCritical([OWSAnalyticsEvents storageErrorDeserialization]);
@throw exception; @throw exception;
} }
}; };

@ -1,13 +0,0 @@
//
// Copyright (c) 2017 Open Whisper Systems. All rights reserved.
//
NS_ASSUME_NONNULL_BEGIN
// Some lingering TSRecipient records in the wild causing crashes.
// This is a stop gap until a proper cleanup happens.
@interface TSRecipient : NSObject <NSCoding>
@end
NS_ASSUME_NONNULL_END

@ -1,21 +0,0 @@
//
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//
#import "TSRecipient.h"
NS_ASSUME_NONNULL_BEGIN
@implementation TSRecipient
- (void)encodeWithCoder:(nonnull NSCoder *)aCoder {
return;
}
- (nullable instancetype)initWithCoder:(nonnull NSCoder *)aDecoder {
return nil;
}
@end
NS_ASSUME_NONNULL_END

@ -340,7 +340,7 @@ NSString *NSStringForOWSAnalyticsSeverity(OWSAnalyticsSeverity severity)
} }
}; };
if ([self isSeverityAsync:severity]) { if ([self shouldReportAsync:severity]) {
dispatch_async(self.serialQueue, addEvent); dispatch_async(self.serialQueue, addEvent);
} else { } else {
dispatch_sync(self.serialQueue, addEvent); dispatch_sync(self.serialQueue, addEvent);
@ -383,12 +383,19 @@ NSString *NSStringForOWSAnalyticsSeverity(OWSAnalyticsSeverity severity)
// Log the event. // Log the event.
NSString *logString = [NSString stringWithFormat:@"%s:%d %@", location, line, eventName]; NSString *logString = [NSString stringWithFormat:@"%s:%d %@", location, line, eventName];
if (!parameters) { if (!parameters) {
LOG_MAYBE([self isSeverityAsync:severity], LOG_LEVEL_DEF, logFlag, 0, nil, location, @"%@", logString); LOG_MAYBE([self shouldReportAsync:severity], LOG_LEVEL_DEF, logFlag, 0, nil, location, @"%@", logString);
} else { } else {
LOG_MAYBE( LOG_MAYBE([self shouldReportAsync:severity],
[self isSeverityAsync:severity], LOG_LEVEL_DEF, logFlag, 0, nil, location, @"%@ %@", logString, parameters); LOG_LEVEL_DEF,
} logFlag,
if (![self isSeverityAsync:severity]) { 0,
nil,
location,
@"%@ %@",
logString,
parameters);
}
if (![self shouldReportAsync:severity]) {
[DDLog flushLog]; [DDLog flushLog];
} }
@ -397,9 +404,9 @@ NSString *NSStringForOWSAnalyticsSeverity(OWSAnalyticsSeverity severity)
[self addEvent:eventName severity:severity properties:eventProperties]; [self addEvent:eventName severity:severity properties:eventProperties];
} }
- (BOOL)isSeverityAsync:(OWSAnalyticsSeverity)severity - (BOOL)shouldReportAsync:(OWSAnalyticsSeverity)severity
{ {
return severity == OWSAnalyticsSeverityCritical; return severity != OWSAnalyticsSeverityCritical;
} }
#pragma mark - Logging #pragma mark - Logging

Loading…
Cancel
Save