Skip to content

Commit e0560ac

Browse files
committed
f: Simplify method calls.
1 parent e8d6a88 commit e0560ac

File tree

1 file changed

+15
-75
lines changed

1 file changed

+15
-75
lines changed

lightning/src/util/persist.rs

Lines changed: 15 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -465,24 +465,14 @@ where
465465
/// It is extremely important that your [`KVStore::read`] implementation uses the
466466
/// [`io::ErrorKind::NotFound`] variant correctly. For more information, please see the
467467
/// documentation for [`MonitorUpdatingPersister`].
468-
pub fn read_all_channel_monitors_with_updates<B: Deref, F: Deref>(
469-
&self, broadcaster: &B, fee_estimator: &F,
470-
) -> Result<Vec<(BlockHash, ChannelMonitor<<SP::Target as SignerProvider>::EcdsaSigner>)>, io::Error>
471-
where
472-
B::Target: BroadcasterInterface,
473-
F::Target: FeeEstimator,
474-
{
468+
pub fn read_all_channel_monitors_with_updates(&self) -> Result<Vec<(BlockHash, ChannelMonitor<<SP::Target as SignerProvider>::EcdsaSigner>)>, io::Error> {
475469
let monitor_list = self.kv_store.list(
476470
CHANNEL_MONITOR_PERSISTENCE_PRIMARY_NAMESPACE,
477471
CHANNEL_MONITOR_PERSISTENCE_SECONDARY_NAMESPACE,
478472
)?;
479473
let mut res = Vec::with_capacity(monitor_list.len());
480474
for monitor_key in monitor_list {
481-
res.push(self.read_channel_monitor_with_updates(
482-
broadcaster,
483-
fee_estimator,
484-
monitor_key,
485-
)?)
475+
res.push(self.read_channel_monitor_with_updates(monitor_key)?)
486476
}
487477
Ok(res)
488478
}
@@ -504,13 +494,9 @@ where
504494
///
505495
/// Loading a large number of monitors will be faster if done in parallel. You can use this
506496
/// function to accomplish this. Take care to limit the number of parallel readers.
507-
pub fn read_channel_monitor_with_updates<B: Deref, F: Deref>(
508-
&self, broadcaster: &B, fee_estimator: &F, monitor_key: String,
509-
) -> Result<(BlockHash, ChannelMonitor<<SP::Target as SignerProvider>::EcdsaSigner>), io::Error>
510-
where
511-
B::Target: BroadcasterInterface,
512-
F::Target: FeeEstimator,
513-
{
497+
pub fn read_channel_monitor_with_updates(
498+
&self, monitor_key: String,
499+
) -> Result<(BlockHash, ChannelMonitor<<SP::Target as SignerProvider>::EcdsaSigner>), io::Error> {
514500
let monitor_name = MonitorName::new(monitor_key)?;
515501
let (block_hash, monitor) = self.read_monitor(&monitor_name)?;
516502
let mut current_update_id = monitor.get_latest_update_id();
@@ -529,7 +515,7 @@ where
529515
Err(err) => return Err(err),
530516
};
531517

532-
monitor.update_monitor(&update, broadcaster, fee_estimator, &self.logger)
518+
monitor.update_monitor(&update, &self.broadcaster, &self.fee_estimator, &self.logger)
533519
.map_err(|e| {
534520
log_error!(
535521
self.logger,
@@ -776,50 +762,12 @@ where
776762

777763
fn archive_persisted_channel(&self, funding_txo: OutPoint) {
778764
let monitor_name = MonitorName::from(funding_txo);
779-
let monitor = match self.read_monitor(&monitor_name) {
765+
let monitor_key = monitor_name.as_str().to_string();
766+
let monitor = match self.read_channel_monitor_with_updates(monitor_key) {
780767
Ok((_block_hash, monitor)) => monitor,
781768
Err(_) => return
782769
};
783770

784-
let mut current_update_id = monitor.get_latest_update_id();
785-
loop {
786-
current_update_id = match current_update_id.checked_add(1) {
787-
Some(next_update_id) => next_update_id,
788-
None => break,
789-
};
790-
let update_name = UpdateName::from(current_update_id);
791-
let update = match self.read_monitor_update(&monitor_name, &update_name) {
792-
Ok(update) => update,
793-
Err(err) if err.kind() == io::ErrorKind::NotFound => {
794-
// We can't find any more updates, so we are done.
795-
break;
796-
}
797-
Err(err) => {
798-
log_error!(
799-
self.logger,
800-
"Monitor update read failed. monitor: {} update: {} reason: {:?}",
801-
monitor_name.as_str(),
802-
update_name.as_str(),
803-
err
804-
);
805-
panic!()
806-
},
807-
};
808-
809-
monitor.update_monitor(&update, &self.broadcaster, &self.fee_estimator, &self.logger)
810-
.map_err(|e| {
811-
log_error!(
812-
self.logger,
813-
"Monitor update failed. monitor: {} update: {} reason: {:?}",
814-
monitor_name.as_str(),
815-
update_name.as_str(),
816-
e
817-
);
818-
io::Error::new(io::ErrorKind::Other, "Monitor update failed")
819-
})
820-
.expect("Could not apply monitor update during archiving");
821-
}
822-
823771
match self.kv_store.write(
824772
ARCHIVED_CHANNEL_MONITOR_PERSISTENCE_PRIMARY_NAMESPACE,
825773
ARCHIVED_CHANNEL_MONITOR_PERSISTENCE_SECONDARY_NAMESPACE,
@@ -1047,23 +995,18 @@ mod tests {
1047995
node_cfgs[1].chain_monitor = chain_mon_1;
1048996
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
1049997
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
1050-
let broadcaster_0 = &chanmon_cfgs[2].tx_broadcaster;
1051-
let broadcaster_1 = &chanmon_cfgs[3].tx_broadcaster;
1052998

1053999
// Check that the persisted channel data is empty before any channels are
10541000
// open.
1055-
let mut persisted_chan_data_0 = persister_0.read_all_channel_monitors_with_updates(
1056-
&broadcaster_0, &&chanmon_cfgs[0].fee_estimator).unwrap();
1001+
let mut persisted_chan_data_0 = persister_0.read_all_channel_monitors_with_updates().unwrap();
10571002
assert_eq!(persisted_chan_data_0.len(), 0);
1058-
let mut persisted_chan_data_1 = persister_1.read_all_channel_monitors_with_updates(
1059-
&broadcaster_1, &&chanmon_cfgs[1].fee_estimator).unwrap();
1003+
let mut persisted_chan_data_1 = persister_1.read_all_channel_monitors_with_updates().unwrap();
10601004
assert_eq!(persisted_chan_data_1.len(), 0);
10611005

10621006
// Helper to make sure the channel is on the expected update ID.
10631007
macro_rules! check_persisted_data {
10641008
($expected_update_id: expr) => {
1065-
persisted_chan_data_0 = persister_0.read_all_channel_monitors_with_updates(
1066-
&broadcaster_0, &&chanmon_cfgs[0].fee_estimator).unwrap();
1009+
persisted_chan_data_0 = persister_0.read_all_channel_monitors_with_updates().unwrap();
10671010
// check that we stored only one monitor
10681011
assert_eq!(persisted_chan_data_0.len(), 1);
10691012
for (_, mon) in persisted_chan_data_0.iter() {
@@ -1082,8 +1025,7 @@ mod tests {
10821025
);
10831026
}
10841027
}
1085-
persisted_chan_data_1 = persister_1.read_all_channel_monitors_with_updates(
1086-
&broadcaster_1, &&chanmon_cfgs[1].fee_estimator).unwrap();
1028+
persisted_chan_data_1 = persister_1.read_all_channel_monitors_with_updates().unwrap();
10871029
assert_eq!(persisted_chan_data_1.len(), 1);
10881030
for (_, mon) in persisted_chan_data_1.iter() {
10891031
assert_eq!(mon.get_latest_update_id(), $expected_update_id);
@@ -1151,7 +1093,7 @@ mod tests {
11511093
check_persisted_data!(CLOSED_CHANNEL_UPDATE_ID);
11521094

11531095
// Make sure the expected number of stale updates is present.
1154-
let persisted_chan_data = persister_0.read_all_channel_monitors_with_updates(&broadcaster_0, &&chanmon_cfgs[0].fee_estimator).unwrap();
1096+
let persisted_chan_data = persister_0.read_all_channel_monitors_with_updates().unwrap();
11551097
let (_, monitor) = &persisted_chan_data[0];
11561098
let monitor_name = MonitorName::from(monitor.get_funding_txo().0);
11571099
// The channel should have 0 updates, as it wrote a full monitor and consolidated.
@@ -1260,11 +1202,9 @@ mod tests {
12601202
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
12611203
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
12621204

1263-
let broadcaster_0 = &chanmon_cfgs[2].tx_broadcaster;
1264-
12651205
// Check that the persisted channel data is empty before any channels are
12661206
// open.
1267-
let persisted_chan_data = persister_0.read_all_channel_monitors_with_updates(&broadcaster_0, &&chanmon_cfgs[0].fee_estimator).unwrap();
1207+
let persisted_chan_data = persister_0.read_all_channel_monitors_with_updates().unwrap();
12681208
assert_eq!(persisted_chan_data.len(), 0);
12691209

12701210
// Create some initial channel
@@ -1275,7 +1215,7 @@ mod tests {
12751215
send_payment(&nodes[1], &vec![&nodes[0]][..], 4_000_000);
12761216

12771217
// Get the monitor and make a fake stale update at update_id=1 (lowest height of an update possible)
1278-
let persisted_chan_data = persister_0.read_all_channel_monitors_with_updates(&broadcaster_0, &&chanmon_cfgs[0].fee_estimator).unwrap();
1218+
let persisted_chan_data = persister_0.read_all_channel_monitors_with_updates().unwrap();
12791219
let (_, monitor) = &persisted_chan_data[0];
12801220
let monitor_name = MonitorName::from(monitor.get_funding_txo().0);
12811221
persister_0

0 commit comments

Comments
 (0)