Skip to content

Commit 006e045

Browse files
authored
fix(DataStore): Add 'weak self' to prevent retain cycles in OutgoingMutationQueue (#3429)
* fix(DataStore): Add 'weak self' to prevent retain cycles * update to use optional binding directly
1 parent a55e899 commit 006e045

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

AmplifyPlugins/DataStore/Sources/AWSDataStorePlugin/Sync/MutationSync/OutgoingMutationQueue/OutgoingMutationQueue.swift

+10-6
Original file line numberDiff line numberDiff line change
@@ -70,9 +70,8 @@ final class OutgoingMutationQueue: OutgoingMutationQueueBehavior {
7070
self.stateMachineSink = self.stateMachine
7171
.$state
7272
.sink { [weak self] newState in
73-
guard let self = self else {
74-
return
75-
}
73+
guard let self else { return }
74+
7675
self.log.verbose("New state: \(newState)")
7776
self.mutationDispatchQueue.async {
7877
self.respond(to: newState)
@@ -138,7 +137,9 @@ final class OutgoingMutationQueue: OutgoingMutationQueueBehavior {
138137
self.api = api
139138
self.reconciliationQueue = reconciliationQueue
140139

141-
queryMutationEventsFromStorage {
140+
queryMutationEventsFromStorage { [weak self] in
141+
guard let self = self else { return }
142+
142143
self.operationQueue.isSuspended = false
143144
// State machine notification to ".receivedSubscription" will be handled in `receive(subscription:)`
144145
mutationEventPublisher.publisher.subscribe(self)
@@ -319,7 +320,8 @@ final class OutgoingMutationQueue: OutgoingMutationQueueBehavior {
319320
self.dispatchOutboxMutationProcessedEvent(mutationEvent: mutationEvent,
320321
mutationSync: mutationSync)
321322
}
322-
self.queryMutationEventsFromStorage {
323+
self.queryMutationEventsFromStorage { [weak self] in
324+
guard let self else { return }
323325
self.stateMachine.notify(action: .processedEvent)
324326
}
325327
}
@@ -333,7 +335,9 @@ final class OutgoingMutationQueue: OutgoingMutationQueueBehavior {
333335
predicate: predicate,
334336
sort: nil,
335337
paginationInput: nil,
336-
eagerLoad: true) { result in
338+
eagerLoad: true) { [weak self] result in
339+
guard let self else { return }
340+
337341
switch result {
338342
case .success(let events):
339343
self.dispatchOutboxStatusEvent(isEmpty: events.isEmpty)

0 commit comments

Comments
 (0)