From 1c21c31c2bd26076ff4033f933af1714c09f0d83 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Wed, 31 Oct 2018 09:50:40 -0400 Subject: [PATCH] Fix failed reloads in SignalRecipient. --- SignalServiceKit/src/Contacts/SignalRecipient.m | 2 +- SignalServiceKit/src/Storage/TSYapDatabaseObject.h | 3 ++- SignalServiceKit/src/Storage/TSYapDatabaseObject.m | 9 ++++++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/SignalServiceKit/src/Contacts/SignalRecipient.m b/SignalServiceKit/src/Contacts/SignalRecipient.m index 4ce907298..38337b861 100644 --- a/SignalServiceKit/src/Contacts/SignalRecipient.m +++ b/SignalServiceKit/src/Contacts/SignalRecipient.m @@ -175,7 +175,7 @@ NS_ASSUME_NONNULL_BEGIN OWSAssertDebug(devices.count > 0); OWSLogDebug(@"removing devices: %@, from registered recipient: %@", devices, self); - [self reloadWithTransaction:transaction]; + [self reloadWithTransaction:transaction ignoreMissing:YES]; [self removeDevices:devices]; [self saveWithTransaction_internal:transaction]; } diff --git a/SignalServiceKit/src/Storage/TSYapDatabaseObject.h b/SignalServiceKit/src/Storage/TSYapDatabaseObject.h index 2c31c81a4..fbd11dbcc 100644 --- a/SignalServiceKit/src/Storage/TSYapDatabaseObject.h +++ b/SignalServiceKit/src/Storage/TSYapDatabaseObject.h @@ -94,8 +94,9 @@ NS_ASSUME_NONNULL_BEGIN /** * Assign the latest persisted values from the database. */ -- (void)reloadWithTransaction:(YapDatabaseReadTransaction *)transaction; - (void)reload; +- (void)reloadWithTransaction:(YapDatabaseReadTransaction *)transaction; +- (void)reloadWithTransaction:(YapDatabaseReadTransaction *)transaction ignoreMissing:(BOOL)ignoreMissing; /** * Saves the object with the shared readWrite connection - does not block. diff --git a/SignalServiceKit/src/Storage/TSYapDatabaseObject.m b/SignalServiceKit/src/Storage/TSYapDatabaseObject.m index a3a5d9108..2e3f4b556 100644 --- a/SignalServiceKit/src/Storage/TSYapDatabaseObject.m +++ b/SignalServiceKit/src/Storage/TSYapDatabaseObject.m @@ -226,10 +226,17 @@ NS_ASSUME_NONNULL_BEGIN } - (void)reloadWithTransaction:(YapDatabaseReadTransaction *)transaction +{ + [self reloadWithTransaction:transaction ignoreMissing:NO]; +} + +- (void)reloadWithTransaction:(YapDatabaseReadTransaction *)transaction ignoreMissing:(BOOL)ignoreMissing { TSYapDatabaseObject *latest = [[self class] fetchObjectWithUniqueID:self.uniqueId transaction:transaction]; if (!latest) { - OWSFailDebug(@"`latest` was unexpectedly nil"); + if (!ignoreMissing) { + OWSFailDebug(@"`latest` was unexpectedly nil"); + } return; }