From 3bb802189c01d9500a695025fe7f6a050b122944 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 21 Feb 2018 16:10:18 -0500 Subject: [PATCH] Use background tasks during db transactions. --- SignalServiceKit/src/Storage/OWSStorage.m | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/SignalServiceKit/src/Storage/OWSStorage.m b/SignalServiceKit/src/Storage/OWSStorage.m index c886aaa74..b424b2aaa 100644 --- a/SignalServiceKit/src/Storage/OWSStorage.m +++ b/SignalServiceKit/src/Storage/OWSStorage.m @@ -6,6 +6,7 @@ #import "AppContext.h" #import "NSData+Base64.h" #import "NSNotificationCenter+OWS.h" +#import "OWSBackgroundTask.h" #import "OWSFileSystem.h" #import "OWSStorage+Subclass.h" #import "TSAttachmentStream.h" @@ -75,7 +76,9 @@ typedef NSData *_Nullable (^CreateDatabaseMetadataBlock)(void); OWSAssert(delegate); OWSAssert(delegate.areAllRegistrationsComplete || self.canWriteBeforeStorageReady); + OWSBackgroundTask *backgroundTask = [OWSBackgroundTask backgroundTaskWithLabelStr:__PRETTY_FUNCTION__]; [super readWriteWithBlock:block]; + backgroundTask = nil; } - (void)asyncReadWriteWithBlock:(void (^)(YapDatabaseReadWriteTransaction *transaction))block @@ -97,7 +100,13 @@ typedef NSData *_Nullable (^CreateDatabaseMetadataBlock)(void); OWSAssert(delegate); OWSAssert(delegate.areAllRegistrationsComplete || self.canWriteBeforeStorageReady); - [super asyncReadWriteWithBlock:block completionQueue:completionQueue completionBlock:completionBlock]; + __block OWSBackgroundTask *backgroundTask = [OWSBackgroundTask backgroundTaskWithLabelStr:__PRETTY_FUNCTION__]; + [super asyncReadWriteWithBlock:block completionQueue:completionQueue completionBlock:^{ + if (completionBlock) { + completionBlock(); + } + backgroundTask = nil; + }]; } @end