Skip to content

Commit 3363c9b

Browse files
authored
Merge pull request #790 from tnull/2026-02-update-by-value
Take `StorableObjectUpdate` by value in `StorableObject::update`
2 parents d30c0f3 + 63e8b95 commit 3363c9b

File tree

5 files changed

+22
-22
lines changed

5 files changed

+22
-22
lines changed

src/data_store.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ pub(crate) trait StorableObject: Clone + Readable + Writeable {
2121
type Update: StorableObjectUpdate<Self>;
2222

2323
fn id(&self) -> Self::Id;
24-
fn update(&mut self, update: &Self::Update) -> bool;
24+
fn update(&mut self, update: Self::Update) -> bool;
2525
fn to_update(&self) -> Self::Update;
2626
}
2727

@@ -79,7 +79,7 @@ where
7979
match locked_objects.entry(object.id()) {
8080
hash_map::Entry::Occupied(mut e) => {
8181
let update = object.to_update();
82-
updated = e.get_mut().update(&update);
82+
updated = e.get_mut().update(update);
8383
if updated {
8484
self.persist(&e.get())?;
8585
}
@@ -124,7 +124,7 @@ where
124124
self.objects.lock().unwrap().get(id).cloned()
125125
}
126126

127-
pub(crate) fn update(&self, update: &SO::Update) -> Result<DataStoreUpdateResult, Error> {
127+
pub(crate) fn update(&self, update: SO::Update) -> Result<DataStoreUpdateResult, Error> {
128128
let mut locked_objects = self.objects.lock().unwrap();
129129

130130
if let Some(object) = locked_objects.get_mut(&update.id()) {
@@ -219,7 +219,7 @@ mod tests {
219219
self.id
220220
}
221221

222-
fn update(&mut self, update: &Self::Update) -> bool {
222+
fn update(&mut self, update: Self::Update) -> bool {
223223
if self.data != update.data {
224224
self.data = update.data;
225225
true
@@ -276,17 +276,17 @@ mod tests {
276276

277277
// Check update returns `Updated`
278278
let update = TestObjectUpdate { id, data: [25u8; 3] };
279-
assert_eq!(Ok(DataStoreUpdateResult::Updated), data_store.update(&update));
279+
assert_eq!(Ok(DataStoreUpdateResult::Updated), data_store.update(update));
280280
assert_eq!(data_store.get(&id).unwrap().data, [25u8; 3]);
281281

282282
// Check no-op update yields `Unchanged`
283283
let update = TestObjectUpdate { id, data: [25u8; 3] };
284-
assert_eq!(Ok(DataStoreUpdateResult::Unchanged), data_store.update(&update));
284+
assert_eq!(Ok(DataStoreUpdateResult::Unchanged), data_store.update(update));
285285

286286
// Check bogus update yields `NotFound`
287287
let bogus_id = TestObjectId { id: [84u8; 4] };
288288
let update = TestObjectUpdate { id: bogus_id, data: [12u8; 3] };
289-
assert_eq!(Ok(DataStoreUpdateResult::NotFound), data_store.update(&update));
289+
assert_eq!(Ok(DataStoreUpdateResult::NotFound), data_store.update(update));
290290

291291
// Check `insert_or_update` inserts unknown objects
292292
let iou_id = TestObjectId { id: [55u8; 4] };

src/event.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -657,7 +657,7 @@ where
657657
status: Some(PaymentStatus::Failed),
658658
..PaymentDetailsUpdate::new(payment_id)
659659
};
660-
match self.payment_store.update(&update) {
660+
match self.payment_store.update(update) {
661661
Ok(_) => return Ok(()),
662662
Err(e) => {
663663
log_error!(self.logger, "Failed to access payment store: {}", e);
@@ -681,7 +681,7 @@ where
681681
status: Some(PaymentStatus::Failed),
682682
..PaymentDetailsUpdate::new(payment_id)
683683
};
684-
match self.payment_store.update(&update) {
684+
match self.payment_store.update(update) {
685685
Ok(_) => return Ok(()),
686686
Err(e) => {
687687
log_error!(self.logger, "Failed to access payment store: {}", e);
@@ -722,7 +722,7 @@ where
722722
status: Some(PaymentStatus::Failed),
723723
..PaymentDetailsUpdate::new(payment_id)
724724
};
725-
match self.payment_store.update(&update) {
725+
match self.payment_store.update(update) {
726726
Ok(_) => return Ok(()),
727727
Err(e) => {
728728
log_error!(self.logger, "Failed to access payment store: {}", e);
@@ -739,7 +739,7 @@ where
739739
counterparty_skimmed_fee_msat: Some(Some(counterparty_skimmed_fee_msat)),
740740
..PaymentDetailsUpdate::new(payment_id)
741741
};
742-
match self.payment_store.update(&update) {
742+
match self.payment_store.update(update) {
743743
Ok(_) => (),
744744
Err(e) => {
745745
log_error!(self.logger, "Failed to access payment store: {}", e);
@@ -910,7 +910,7 @@ where
910910
status: Some(PaymentStatus::Failed),
911911
..PaymentDetailsUpdate::new(payment_id)
912912
};
913-
match self.payment_store.update(&update) {
913+
match self.payment_store.update(update) {
914914
Ok(_) => return Ok(()),
915915
Err(e) => {
916916
log_error!(self.logger, "Failed to access payment store: {}", e);
@@ -978,7 +978,7 @@ where
978978
},
979979
};
980980

981-
match self.payment_store.update(&update) {
981+
match self.payment_store.update(update) {
982982
Ok(DataStoreUpdateResult::Updated) | Ok(DataStoreUpdateResult::Unchanged) => (
983983
// No need to do anything if the idempotent update was applied, which might
984984
// be the result of a replayed event.
@@ -1039,7 +1039,7 @@ where
10391039
..PaymentDetailsUpdate::new(payment_id)
10401040
};
10411041

1042-
match self.payment_store.update(&update) {
1042+
match self.payment_store.update(update) {
10431043
Ok(_) => {},
10441044
Err(e) => {
10451045
log_error!(self.logger, "Failed to access payment store: {}", e);
@@ -1090,7 +1090,7 @@ where
10901090
status: Some(PaymentStatus::Failed),
10911091
..PaymentDetailsUpdate::new(payment_id)
10921092
};
1093-
match self.payment_store.update(&update) {
1093+
match self.payment_store.update(update) {
10941094
Ok(_) => {},
10951095
Err(e) => {
10961096
log_error!(self.logger, "Failed to access payment store: {}", e);

src/payment/bolt11.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ impl Bolt11Payment {
383383
..PaymentDetailsUpdate::new(payment_id)
384384
};
385385

386-
match self.payment_store.update(&update) {
386+
match self.payment_store.update(update) {
387387
Ok(DataStoreUpdateResult::Updated) | Ok(DataStoreUpdateResult::Unchanged) => (),
388388
Ok(DataStoreUpdateResult::NotFound) => {
389389
log_error!(

src/payment/pending_payment_store.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,17 +53,17 @@ impl StorableObject for PendingPaymentDetails {
5353
self.details.id
5454
}
5555

56-
fn update(&mut self, update: &Self::Update) -> bool {
56+
fn update(&mut self, update: Self::Update) -> bool {
5757
let mut updated = false;
5858

5959
// Update the underlying payment details if present
60-
if let Some(payment_update) = &update.payment_update {
60+
if let Some(payment_update) = update.payment_update {
6161
updated |= self.details.update(payment_update);
6262
}
6363

64-
if let Some(new_conflicting_txids) = &update.conflicting_txids {
65-
if &self.conflicting_txids != new_conflicting_txids {
66-
self.conflicting_txids = new_conflicting_txids.clone();
64+
if let Some(new_conflicting_txids) = update.conflicting_txids {
65+
if self.conflicting_txids != new_conflicting_txids {
66+
self.conflicting_txids = new_conflicting_txids;
6767
updated = true;
6868
}
6969
}

src/payment/store.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ impl StorableObject for PaymentDetails {
170170
self.id
171171
}
172172

173-
fn update(&mut self, update: &Self::Update) -> bool {
173+
fn update(&mut self, update: Self::Update) -> bool {
174174
debug_assert_eq!(
175175
self.id, update.id,
176176
"We should only ever override payment data for the same payment id"

0 commit comments

Comments
 (0)