Skip to content

Commit 32c48bd

Browse files
committed
lsps2: Restore cached payment leases
After startup discovery, refill persisted fixed-amount and variable lease cache targets. Reuse valid leases and renegotiate only missing or stale entries so receiving can resume promptly after restart. Co-Authored-By: HAL 9000
1 parent 233c5f7 commit 32c48bd

2 files changed

Lines changed: 28 additions & 0 deletions

File tree

src/lib.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -805,6 +805,17 @@ impl Node {
805805
liquidity_logger,
806806
"LSP protocols discovery complete.",
807807
);
808+
if let Err(error) = liquidity_handler
809+
.lsps2_client()
810+
.refill_cached_leases(&discovery_cm)
811+
.await
812+
{
813+
log_error!(
814+
liquidity_logger,
815+
"Failed scheduling LSPS2 lease cache refills: {}",
816+
error
817+
);
818+
}
808819
}
809820
}
810821
}

src/liquidity/client/lsps2/mod.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,23 @@ where
140140
self.cache_target_store.targets()
141141
}
142142

143+
pub(crate) async fn refill_cached_leases(
144+
self: &Arc<Self>, connection_manager: &Arc<ConnectionManager<L>>,
145+
) -> Result<(), Error> {
146+
self.prune_stale_cache_targets().await?;
147+
for target in self.cache_targets() {
148+
match target.id {
149+
LeaseCacheTargetId::Fixed { amount_msat } => {
150+
self.schedule_fixed_lease_refill(amount_msat, connection_manager);
151+
},
152+
LeaseCacheTargetId::Variable => {
153+
self.schedule_variable_lease_refill(connection_manager);
154+
},
155+
}
156+
}
157+
Ok(())
158+
}
159+
143160
pub(crate) async fn prepare_invoice_response(
144161
self: Arc<Self>, request: JitInvoiceRequest, connection_manager: Arc<ConnectionManager<L>>,
145162
) -> Result<JitInvoiceResponse, Error> {

0 commit comments

Comments
 (0)