From eec0efa3c89d9923b8cd9c82c2b570c7f840fe18 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 27 Sep 2017 11:30:23 -0400 Subject: [PATCH 1/4] Fix class rename. // FREEBIE --- .../src/Messages/OWSBatchMessageProcessor.m | 21 +++++++++---------- .../src/Messages/OWSMessageReceiver.m | 21 ++++++++----------- .../src/Storage/TSStorageManager.m | 13 ++++++++++++ 3 files changed, 32 insertions(+), 23 deletions(-) diff --git a/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m b/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m index 91609dad3..29ca429a3 100644 --- a/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m +++ b/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m @@ -24,9 +24,12 @@ NS_ASSUME_NONNULL_BEGIN @interface OWSMessageContentJob : TSYapDatabaseObject @property (nonatomic, readonly) NSDate *createdAt; +@property (nonatomic, readonly) NSData *envelopeData; +@property (nonatomic, readonly, nullable) NSData *plaintextData; - (instancetype)initWithEnvelopeData:(NSData *)envelopeData plaintextData:(NSData *_Nullable)plaintextData NS_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER; - (instancetype)initWithUniqueId:(NSString *)uniqueId NS_UNAVAILABLE; - (OWSSignalServiceProtosEnvelope *)envelopeProto; @@ -34,15 +37,6 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - -@interface OWSMessageContentJob () - -@property (nonatomic, readonly) NSData *envelopeData; -@property (nonatomic, readonly, nullable) NSData *plaintextData; - -@end - -#pragma mark - - @implementation OWSMessageContentJob + (NSString *)collection @@ -66,6 +60,11 @@ NS_ASSUME_NONNULL_BEGIN return self; } +- (nullable instancetype)initWithCoder:(NSCoder *)coder +{ + return [super initWithCoder:coder]; +} + - (OWSSignalServiceProtosEnvelope *)envelopeProto { return [OWSSignalServiceProtosEnvelope parseFromData:self.envelopeData]; @@ -75,8 +74,8 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - Finder -NSString *const OWSMessageContentJobFinderExtensionName = @"OWSBatchMessageProcessingFinderExtensionName"; -NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSBatchMessageProcessingFinderExtensionGroup"; +NSString *const OWSMessageContentJobFinderExtensionName = @"OWSMessageContentJobFinderExtensionName"; +NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJobFinderExtensionGroup"; @interface OWSMessageContentJobFinder : NSObject diff --git a/SignalServiceKit/src/Messages/OWSMessageReceiver.m b/SignalServiceKit/src/Messages/OWSMessageReceiver.m index 6d58214da..239fa5362 100644 --- a/SignalServiceKit/src/Messages/OWSMessageReceiver.m +++ b/SignalServiceKit/src/Messages/OWSMessageReceiver.m @@ -18,15 +18,13 @@ NS_ASSUME_NONNULL_BEGIN -#pragma mark - Persisted data model - -@class OWSSignalServiceProtosEnvelope; - @interface OWSMessageDecryptJob : TSYapDatabaseObject @property (nonatomic, readonly) NSDate *createdAt; +@property (nonatomic, readonly) NSData *envelopeData; - (instancetype)initWithEnvelope:(OWSSignalServiceProtosEnvelope *)envelope NS_DESIGNATED_INITIALIZER; +- (nullable instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER; - (instancetype)initWithUniqueId:(NSString *)uniqueId NS_UNAVAILABLE; - (OWSSignalServiceProtosEnvelope *)envelopeProto; @@ -34,14 +32,6 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - -@interface OWSMessageDecryptJob () - -@property (nonatomic, readonly) NSData *envelopeData; - -@end - -#pragma mark - - @implementation OWSMessageDecryptJob + (NSString *)collection @@ -64,6 +54,11 @@ NS_ASSUME_NONNULL_BEGIN return self; } +- (nullable instancetype)initWithCoder:(NSCoder *)coder +{ + return [super initWithCoder:coder]; +} + - (OWSSignalServiceProtosEnvelope *)envelopeProto { return [OWSSignalServiceProtosEnvelope parseFromData:self.envelopeData]; @@ -103,6 +98,8 @@ NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessin _dbConnection = dbConnection; + [NSKeyedUnarchiver setClass:[OWSMessageDecryptJob class] forClassName:[OWSMessageDecryptJob collection]]; + return self; } diff --git a/SignalServiceKit/src/Storage/TSStorageManager.m b/SignalServiceKit/src/Storage/TSStorageManager.m index 19828b785..c01f1ee8c 100644 --- a/SignalServiceKit/src/Storage/TSStorageManager.m +++ b/SignalServiceKit/src/Storage/TSStorageManager.m @@ -186,10 +186,23 @@ void setDatabaseInitialized() - (nullable Class)unarchiver:(NSKeyedUnarchiver *)unarchiver cannotDecodeObjectOfClassName:(NSString *)name originalClasses:(NSArray *)classNames { + DDLogVerbose(@"%@ Could not decode object: %@", self.tag, name); OWSProdError([OWSAnalyticsEvents storageErrorCouldNotDecodeClass]); return [OWSUnknownObject class]; } +#pragma mark - Logging + ++ (NSString *)tag +{ + return [NSString stringWithFormat:@"[%@]", self.class]; +} + +- (NSString *)tag +{ + return self.class.tag; +} + @end #pragma mark - From 6b8c9b6bcff30e951c2d8795f39675e50a7bab7b Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 27 Sep 2017 12:32:03 -0400 Subject: [PATCH 2/4] Iterate the names of the incoming message queue extensions. // FREEBIE --- SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m | 4 ++-- SignalServiceKit/src/Messages/OWSMessageReceiver.m | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m b/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m index 29ca429a3..5fe505c7b 100644 --- a/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m +++ b/SignalServiceKit/src/Messages/OWSBatchMessageProcessor.m @@ -74,8 +74,8 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - Finder -NSString *const OWSMessageContentJobFinderExtensionName = @"OWSMessageContentJobFinderExtensionName"; -NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJobFinderExtensionGroup"; +NSString *const OWSMessageContentJobFinderExtensionName = @"OWSMessageContentJobFinderExtensionName2"; +NSString *const OWSMessageContentJobFinderExtensionGroup = @"OWSMessageContentJobFinderExtensionGroup2"; @interface OWSMessageContentJobFinder : NSObject diff --git a/SignalServiceKit/src/Messages/OWSMessageReceiver.m b/SignalServiceKit/src/Messages/OWSMessageReceiver.m index 239fa5362..8161928b8 100644 --- a/SignalServiceKit/src/Messages/OWSMessageReceiver.m +++ b/SignalServiceKit/src/Messages/OWSMessageReceiver.m @@ -68,8 +68,8 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - Finder -NSString *const OWSMessageDecryptJobFinderExtensionName = @"OWSMessageProcessingJobFinderExtensionName"; -NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessingJobFinderExtensionGroup"; +NSString *const OWSMessageDecryptJobFinderExtensionName = @"OWSMessageProcessingJobFinderExtensionName2"; +NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessingJobFinderExtensionGroup2"; @interface OWSMessageDecryptJobFinder : NSObject From 01bda556c86691dd4b89669001bd8a037ebb8206 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 27 Sep 2017 12:40:36 -0400 Subject: [PATCH 3/4] Fix class rename. // FREEBIE --- SignalServiceKit/src/Messages/OWSMessageReceiver.m | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/SignalServiceKit/src/Messages/OWSMessageReceiver.m b/SignalServiceKit/src/Messages/OWSMessageReceiver.m index 8161928b8..cf2d5d074 100644 --- a/SignalServiceKit/src/Messages/OWSMessageReceiver.m +++ b/SignalServiceKit/src/Messages/OWSMessageReceiver.m @@ -98,7 +98,7 @@ NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessin _dbConnection = dbConnection; - [NSKeyedUnarchiver setClass:[OWSMessageDecryptJob class] forClassName:[OWSMessageDecryptJob collection]]; + [OWSMessageDecryptJobFinder registerLegacyClasses]; return self; } @@ -177,9 +177,18 @@ NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessin return [[YapDatabaseView alloc] initWithGrouping:grouping sorting:sorting versionTag:@"1" options:options]; } ++ (void)registerLegacyClasses +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + [NSKeyedUnarchiver setClass:[OWSMessageDecryptJob class] forClassName:[OWSMessageDecryptJob collection]]; + }); +} + (void)syncRegisterDatabaseExtension:(YapDatabase *)database { + [self registerLegacyClasses]; + YapDatabaseView *existingView = [database registeredExtension:OWSMessageDecryptJobFinderExtensionName]; if (existingView) { OWSFail(@"%@ was already initialized.", OWSMessageDecryptJobFinderExtensionName); From 834ad3f8e148226f13c3e159d41651e47aaf1c5d Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 27 Sep 2017 12:59:38 -0400 Subject: [PATCH 4/4] Respond to CR. // FREEBIE --- SignalServiceKit/src/Messages/OWSMessageReceiver.m | 1 + SignalServiceKit/src/Storage/TSStorageManager.m | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/SignalServiceKit/src/Messages/OWSMessageReceiver.m b/SignalServiceKit/src/Messages/OWSMessageReceiver.m index cf2d5d074..d5c9cb927 100644 --- a/SignalServiceKit/src/Messages/OWSMessageReceiver.m +++ b/SignalServiceKit/src/Messages/OWSMessageReceiver.m @@ -181,6 +181,7 @@ NSString *const OWSMessageDecryptJobFinderExtensionGroup = @"OWSMessageProcessin { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ + // We've renamed OWSMessageProcessingJob to OWSMessageDecryptJob. [NSKeyedUnarchiver setClass:[OWSMessageDecryptJob class] forClassName:[OWSMessageDecryptJob collection]]; }); } diff --git a/SignalServiceKit/src/Storage/TSStorageManager.m b/SignalServiceKit/src/Storage/TSStorageManager.m index c01f1ee8c..7d9614b26 100644 --- a/SignalServiceKit/src/Storage/TSStorageManager.m +++ b/SignalServiceKit/src/Storage/TSStorageManager.m @@ -186,7 +186,7 @@ void setDatabaseInitialized() - (nullable Class)unarchiver:(NSKeyedUnarchiver *)unarchiver cannotDecodeObjectOfClassName:(NSString *)name originalClasses:(NSArray *)classNames { - DDLogVerbose(@"%@ Could not decode object: %@", self.tag, name); + DDLogError(@"%@ Could not decode object: %@", self.tag, name); OWSProdError([OWSAnalyticsEvents storageErrorCouldNotDecodeClass]); return [OWSUnknownObject class]; }