Drop `Arc`s around `lightning-liquidity`'s `DefaultTimeProvider`
What changed, and why it matters
This commit is a small internal cleanup in the rust-lightning project. It removes unnecessary reference-counting wrappers (Arc) around a simple, zero-sized clock helper called DefaultTimeProvider, and adds a Deref implementation so the helper can be passed directly where an Arc was previously expected. There is no security-relevant change here.
No security action needed. Treat as a normal refactoring/cleanup commit.
Security signals we found
No strong security signals were identified.
Evidence from the diff
The patch removes Arc
Changed components
lightning-liquidity/src/utils/time.rslightning-liquidity/src/manager.rslightning-background-processor/src/lib.rsInspect captured patch +16 / −5
diff --git a/lightning-background-processor/src/lib.rs b/lightning-background-processor/src/lib.rs
index a5df6b3..86576e7 100644
--- a/lightning-background-processor/src/lib.rs
+++ b/lightning-background-processor/src/lib.rs
@@ -1953,7 +1953,7 @@ mod tests {
Arc<ChannelManager>,
Arc<dyn Filter + Sync + Send>,
Arc<Persister>,
- Arc<DefaultTimeProvider>,
+ DefaultTimeProvider,
>;
struct Node {
diff --git a/lightning-liquidity/src/manager.rs b/lightning-liquidity/src/manager.rs
index a2def4b..9b45233 100644
--- a/lightning-liquidity/src/manager.rs
+++ b/lightning-liquidity/src/manager.rs
@@ -318,7 +318,7 @@ impl<
CM: Deref + Clone,
C: Deref + Clone,
K: Deref + Clone,
- > LiquidityManager<ES, NS, CM, C, K, Arc<DefaultTimeProvider>>
+ > LiquidityManager<ES, NS, CM, C, K, DefaultTimeProvider>
where
ES::Target: EntropySource,
NS::Target: NodeSigner,
@@ -335,7 +335,6 @@ where
service_config: Option<LiquidityServiceConfig>,
client_config: Option<LiquidityClientConfig>,
) -> Result<Self, lightning::io::Error> {
- let time_provider = Arc::new(DefaultTimeProvider);
Self::new_with_custom_time_provider(
entropy_source,
node_signer,
@@ -345,7 +344,7 @@ where
kv_store,
service_config,
client_config,
- time_provider,
+ DefaultTimeProvider,
)
.await
}
@@ -1046,7 +1045,7 @@ impl<
CM: Deref + Clone,
C: Deref + Clone,
KS: Deref + Clone,
- > LiquidityManagerSync<ES, NS, CM, C, KS, Arc<DefaultTimeProvider>>
+ > LiquidityManagerSync<ES, NS, CM, C, KS, DefaultTimeProvider>
where
ES::Target: EntropySource,
NS::Target: NodeSigner,
diff --git a/lightning-liquidity/src/utils/time.rs b/lightning-liquidity/src/utils/time.rs
index 5f1622b..a8b2bb4 100644
--- a/lightning-liquidity/src/utils/time.rs
+++ b/lightning-liquidity/src/utils/time.rs
@@ -12,6 +12,11 @@ pub trait TimeProvider {
}
/// Default time provider using the system clock.
+///
+/// You likely don't need to use this directly, it is used automatically with
+/// [`LiquidityManager::new`]
+///
+/// [`LiquidityManager::new`]: crate::manager::LiquidityManager::new
#[derive(Clone, Debug)]
#[cfg(feature = "time")]
pub struct DefaultTimeProvider;
@@ -23,3 +28,10 @@ impl TimeProvider for DefaultTimeProvider {
SystemTime::now().duration_since(UNIX_EPOCH).expect("system time before Unix epoch")
}
}
+#[cfg(feature = "time")]
+impl core::ops::Deref for DefaultTimeProvider {
+ type Target = Self;
+ fn deref(&self) -> &Self {
+ self
+ }
+}
Why this scored 15/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.