From 0fb6dab0208b419b5a8b9e859ddc8dff893fbc49 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Wed, 16 Jan 2019 17:20:54 -0700 Subject: [PATCH] avoid blocking write connection with long running read when building sync message --- SignalMessaging/contacts/OWSSyncManager.m | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/SignalMessaging/contacts/OWSSyncManager.m b/SignalMessaging/contacts/OWSSyncManager.m index 3dd8d2821..702399f71 100644 --- a/SignalMessaging/contacts/OWSSyncManager.m +++ b/SignalMessaging/contacts/OWSSyncManager.m @@ -1,5 +1,5 @@ // -// Copyright (c) 2018 Open Whisper Systems. All rights reserved. +// Copyright (c) 2019 Open Whisper Systems. All rights reserved. // #import "OWSSyncManager.h" @@ -127,10 +127,16 @@ NSString *const kSyncManagerLastContactSyncKey = @"kTSStorageManagerOWSSyncManag #pragma mark - -- (YapDatabaseConnection *)editingDatabaseConnection { +- (YapDatabaseConnection *)editingDatabaseConnection +{ return OWSPrimaryStorage.sharedManager.dbReadWriteConnection; } +- (YapDatabaseConnection *)readDatabaseConnection +{ + return OWSPrimaryStorage.sharedManager.dbReadConnection; +} + #pragma mark - Methods - (void)sendSyncContactsMessageIfNecessary { @@ -155,7 +161,7 @@ NSString *const kSyncManagerLastContactSyncKey = @"kTSStorageManagerOWSSyncManag __block NSData *_Nullable messageData; __block NSData *_Nullable lastMessageData; - [self.editingDatabaseConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) { + [self.readDatabaseConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) { messageData = [syncContactsMessage buildPlainTextAttachmentDataWithTransaction:transaction]; lastMessageData = [transaction objectForKey:kSyncManagerLastContactSyncKey inCollection:kSyncManagerCollection]; @@ -267,7 +273,7 @@ NSString *const kSyncManagerLastContactSyncKey = @"kTSStorageManagerOWSSyncManag identityManager:self.identityManager profileManager:self.profileManager]; __block DataSource *dataSource; - [self.editingDatabaseConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) { + [self.readDatabaseConnection readWithBlock:^(YapDatabaseReadTransaction *transaction) { dataSource = [DataSourceValue dataSourceWithSyncMessageData:[syncContactsMessage buildPlainTextAttachmentDataWithTransaction:transaction]];