Skip to content

Commit 594e1fb

Browse files
committed
Update payment store before wallet persistence
Previously, we'd update the payment store after persisting the wallet in some cases. This was fine as long as we iterated all wallet transactions anyways (hence idempotent). However, now that we use the event-based flow we should persist the payment store(s) first, so that wallet events get replayed if there was a crash in-between some of the persistence operations.
1 parent 788055f commit 594e1fb

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

src/wallet/mod.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,14 +132,14 @@ impl Wallet {
132132
let mut locked_wallet = self.inner.lock().unwrap();
133133
match locked_wallet.apply_update_events(update) {
134134
Ok(events) => {
135-
let mut locked_persister = self.persister.lock().unwrap();
136-
locked_wallet.persist(&mut locked_persister).map_err(|e| {
137-
log_error!(self.logger, "Failed to persist wallet: {}", e);
135+
self.update_payment_store(&mut *locked_wallet, events).map_err(|e| {
136+
log_error!(self.logger, "Failed to update payment store: {}", e);
138137
Error::PersistenceFailed
139138
})?;
140139

141-
self.update_payment_store(&mut *locked_wallet, events).map_err(|e| {
142-
log_error!(self.logger, "Failed to update payment store: {}", e);
140+
let mut locked_persister = self.persister.lock().unwrap();
141+
locked_wallet.persist(&mut locked_persister).map_err(|e| {
142+
log_error!(self.logger, "Failed to persist wallet: {}", e);
143143
Error::PersistenceFailed
144144
})?;
145145

0 commit comments

Comments
 (0)