Skip to content

Commit f29bdd3

Browse files
committed
Refactor PaymentStore to use DataStore
.. we utilize the just-introduced generalized `DataStore` for our `PaymentStore`.
1 parent 7a94297 commit f29bdd3

File tree

9 files changed

+164
-346
lines changed

9 files changed

+164
-346
lines changed

src/builder.rs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,23 @@ use crate::gossip::GossipSource;
1818
use crate::io::sqlite_store::SqliteStore;
1919
use crate::io::utils::{read_node_metrics, write_node_metrics};
2020
use crate::io::vss_store::VssStore;
21+
use crate::io::{
22+
self, PAYMENT_INFO_PERSISTENCE_PRIMARY_NAMESPACE, PAYMENT_INFO_PERSISTENCE_SECONDARY_NAMESPACE,
23+
};
2124
use crate::liquidity::{
2225
LSPS1ClientConfig, LSPS2ClientConfig, LSPS2ServiceConfig, LiquiditySourceBuilder,
2326
};
2427
use crate::logger::{log_error, log_info, LdkLogger, LogLevel, LogWriter, Logger};
2528
use crate::message_handler::NodeCustomMessageHandler;
26-
use crate::payment::store::PaymentStore;
2729
use crate::peer_store::PeerStore;
2830
use crate::tx_broadcaster::TransactionBroadcaster;
2931
use crate::types::{
3032
ChainMonitor, ChannelManager, DynStore, GossipSync, Graph, KeysManager, MessageRouter,
31-
OnionMessenger, PeerManager,
33+
OnionMessenger, PaymentStore, PeerManager,
3234
};
3335
use crate::wallet::persist::KVStoreWalletPersister;
3436
use crate::wallet::Wallet;
35-
use crate::{io, Node, NodeMetrics};
37+
use crate::{Node, NodeMetrics};
3638

3739
use lightning::chain::{chainmonitor, BestBlock, Watch};
3840
use lightning::io::Cursor;
@@ -1015,9 +1017,13 @@ fn build_with_store_internal(
10151017
let fee_estimator = Arc::new(OnchainFeeEstimator::new());
10161018

10171019
let payment_store = match io::utils::read_payments(Arc::clone(&kv_store), Arc::clone(&logger)) {
1018-
Ok(payments) => {
1019-
Arc::new(PaymentStore::new(payments, Arc::clone(&kv_store), Arc::clone(&logger)))
1020-
},
1020+
Ok(payments) => Arc::new(PaymentStore::new(
1021+
payments,
1022+
PAYMENT_INFO_PERSISTENCE_PRIMARY_NAMESPACE.to_string(),
1023+
PAYMENT_INFO_PERSISTENCE_SECONDARY_NAMESPACE.to_string(),
1024+
Arc::clone(&kv_store),
1025+
Arc::clone(&logger),
1026+
)),
10211027
Err(_) => {
10221028
return Err(BuildError::ReadFailed);
10231029
},

src/event.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
// http://opensource.org/licenses/MIT>, at your option. You may not use this file except in
66
// accordance with one or both of these licenses.
77

8-
use crate::types::{CustomTlvRecord, DynStore, Sweeper, Wallet};
8+
use crate::types::{CustomTlvRecord, DynStore, PaymentStore, Sweeper, Wallet};
99

1010
use crate::{
1111
hex_utils, BumpTransactionEventHandler, ChannelManager, Error, Graph, PeerInfo, PeerStore,
@@ -14,13 +14,13 @@ use crate::{
1414

1515
use crate::config::{may_announce_channel, Config};
1616
use crate::connection::ConnectionManager;
17+
use crate::data_store::DataStoreUpdateResult;
1718
use crate::fee_estimator::ConfirmationTarget;
1819
use crate::liquidity::LiquiditySource;
1920
use crate::logger::Logger;
2021

2122
use crate::payment::store::{
2223
PaymentDetails, PaymentDetailsUpdate, PaymentDirection, PaymentKind, PaymentStatus,
23-
PaymentStore, PaymentStoreUpdateResult,
2424
};
2525

2626
use crate::io::{
@@ -449,7 +449,7 @@ where
449449
output_sweeper: Arc<Sweeper>,
450450
network_graph: Arc<Graph>,
451451
liquidity_source: Option<Arc<LiquiditySource<Arc<Logger>>>>,
452-
payment_store: Arc<PaymentStore<L>>,
452+
payment_store: Arc<PaymentStore>,
453453
peer_store: Arc<PeerStore<L>>,
454454
runtime: Arc<RwLock<Option<Arc<tokio::runtime::Runtime>>>>,
455455
logger: L,
@@ -466,7 +466,7 @@ where
466466
channel_manager: Arc<ChannelManager>, connection_manager: Arc<ConnectionManager<L>>,
467467
output_sweeper: Arc<Sweeper>, network_graph: Arc<Graph>,
468468
liquidity_source: Option<Arc<LiquiditySource<Arc<Logger>>>>,
469-
payment_store: Arc<PaymentStore<L>>, peer_store: Arc<PeerStore<L>>,
469+
payment_store: Arc<PaymentStore>, peer_store: Arc<PeerStore<L>>,
470470
runtime: Arc<RwLock<Option<Arc<tokio::runtime::Runtime>>>>, logger: L, config: Arc<Config>,
471471
) -> Self {
472472
Self {
@@ -906,12 +906,11 @@ where
906906
};
907907

908908
match self.payment_store.update(&update) {
909-
Ok(PaymentStoreUpdateResult::Updated)
910-
| Ok(PaymentStoreUpdateResult::Unchanged) => (
909+
Ok(DataStoreUpdateResult::Updated) | Ok(DataStoreUpdateResult::Unchanged) => (
911910
// No need to do anything if the idempotent update was applied, which might
912911
// be the result of a replayed event.
913912
),
914-
Ok(PaymentStoreUpdateResult::NotFound) => {
913+
Ok(DataStoreUpdateResult::NotFound) => {
915914
log_error!(
916915
self.logger,
917916
"Claimed payment with ID {} couldn't be found in store",

src/lib.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,15 +136,14 @@ use gossip::GossipSource;
136136
use graph::NetworkGraph;
137137
use io::utils::write_node_metrics;
138138
use liquidity::{LSPS1Liquidity, LiquiditySource};
139-
use payment::store::PaymentStore;
140139
use payment::{
141140
Bolt11Payment, Bolt12Payment, OnchainPayment, PaymentDetails, SpontaneousPayment,
142141
UnifiedQrPayment,
143142
};
144143
use peer_store::{PeerInfo, PeerStore};
145144
use types::{
146145
Broadcaster, BumpTransactionEventHandler, ChainMonitor, ChannelManager, DynStore, Graph,
147-
KeysManager, OnionMessenger, PeerManager, Router, Scorer, Sweeper, Wallet,
146+
KeysManager, OnionMessenger, PaymentStore, PeerManager, Router, Scorer, Sweeper, Wallet,
148147
};
149148
pub use types::{ChannelDetails, CustomTlvRecord, PeerDetails, UserChannelId};
150149

@@ -200,7 +199,7 @@ pub struct Node {
200199
_router: Arc<Router>,
201200
scorer: Arc<Mutex<Scorer>>,
202201
peer_store: Arc<PeerStore<Arc<Logger>>>,
203-
payment_store: Arc<PaymentStore<Arc<Logger>>>,
202+
payment_store: Arc<PaymentStore>,
204203
is_listening: Arc<AtomicBool>,
205204
node_metrics: Arc<RwLock<NodeMetrics>>,
206205
}

src/payment/bolt11.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,17 @@
1111
1212
use crate::config::{Config, LDK_PAYMENT_RETRY_TIMEOUT};
1313
use crate::connection::ConnectionManager;
14+
use crate::data_store::DataStoreUpdateResult;
1415
use crate::error::Error;
1516
use crate::liquidity::LiquiditySource;
1617
use crate::logger::{log_error, log_info, LdkLogger, Logger};
1718
use crate::payment::store::{
1819
LSPFeeLimits, PaymentDetails, PaymentDetailsUpdate, PaymentDirection, PaymentKind,
19-
PaymentStatus, PaymentStore, PaymentStoreUpdateResult,
20+
PaymentStatus,
2021
};
2122
use crate::payment::SendingParameters;
2223
use crate::peer_store::{PeerInfo, PeerStore};
23-
use crate::types::ChannelManager;
24+
use crate::types::{ChannelManager, PaymentStore};
2425

2526
use lightning::ln::bolt11_payment;
2627
use lightning::ln::channelmanager::{
@@ -90,7 +91,7 @@ pub struct Bolt11Payment {
9091
channel_manager: Arc<ChannelManager>,
9192
connection_manager: Arc<ConnectionManager<Arc<Logger>>>,
9293
liquidity_source: Option<Arc<LiquiditySource<Arc<Logger>>>>,
93-
payment_store: Arc<PaymentStore<Arc<Logger>>>,
94+
payment_store: Arc<PaymentStore>,
9495
peer_store: Arc<PeerStore<Arc<Logger>>>,
9596
config: Arc<Config>,
9697
logger: Arc<Logger>,
@@ -102,7 +103,7 @@ impl Bolt11Payment {
102103
channel_manager: Arc<ChannelManager>,
103104
connection_manager: Arc<ConnectionManager<Arc<Logger>>>,
104105
liquidity_source: Option<Arc<LiquiditySource<Arc<Logger>>>>,
105-
payment_store: Arc<PaymentStore<Arc<Logger>>>, peer_store: Arc<PeerStore<Arc<Logger>>>,
106+
payment_store: Arc<PaymentStore>, peer_store: Arc<PeerStore<Arc<Logger>>>,
106107
config: Arc<Config>, logger: Arc<Logger>,
107108
) -> Self {
108109
Self {
@@ -434,8 +435,8 @@ impl Bolt11Payment {
434435
};
435436

436437
match self.payment_store.update(&update) {
437-
Ok(PaymentStoreUpdateResult::Updated) | Ok(PaymentStoreUpdateResult::Unchanged) => (),
438-
Ok(PaymentStoreUpdateResult::NotFound) => {
438+
Ok(DataStoreUpdateResult::Updated) | Ok(DataStoreUpdateResult::Unchanged) => (),
439+
Ok(DataStoreUpdateResult::NotFound) => {
439440
log_error!(
440441
self.logger,
441442
"Failed to manually fail unknown payment with hash {}",

src/payment/bolt12.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,8 @@
1212
use crate::config::LDK_PAYMENT_RETRY_TIMEOUT;
1313
use crate::error::Error;
1414
use crate::logger::{log_error, log_info, LdkLogger, Logger};
15-
use crate::payment::store::{
16-
PaymentDetails, PaymentDirection, PaymentKind, PaymentStatus, PaymentStore,
17-
};
18-
use crate::types::ChannelManager;
15+
use crate::payment::store::{PaymentDetails, PaymentDirection, PaymentKind, PaymentStatus};
16+
use crate::types::{ChannelManager, PaymentStore};
1917

2018
use lightning::ln::channelmanager::{PaymentId, Retry};
2119
use lightning::offers::invoice::Bolt12Invoice;
@@ -39,14 +37,14 @@ use std::time::{Duration, SystemTime, UNIX_EPOCH};
3937
pub struct Bolt12Payment {
4038
runtime: Arc<RwLock<Option<Arc<tokio::runtime::Runtime>>>>,
4139
channel_manager: Arc<ChannelManager>,
42-
payment_store: Arc<PaymentStore<Arc<Logger>>>,
40+
payment_store: Arc<PaymentStore>,
4341
logger: Arc<Logger>,
4442
}
4543

4644
impl Bolt12Payment {
4745
pub(crate) fn new(
4846
runtime: Arc<RwLock<Option<Arc<tokio::runtime::Runtime>>>>,
49-
channel_manager: Arc<ChannelManager>, payment_store: Arc<PaymentStore<Arc<Logger>>>,
47+
channel_manager: Arc<ChannelManager>, payment_store: Arc<PaymentStore>,
5048
logger: Arc<Logger>,
5149
) -> Self {
5250
Self { runtime, channel_manager, payment_store, logger }

src/payment/spontaneous.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,9 @@
1010
use crate::config::{Config, LDK_PAYMENT_RETRY_TIMEOUT};
1111
use crate::error::Error;
1212
use crate::logger::{log_error, log_info, LdkLogger, Logger};
13-
use crate::payment::store::{
14-
PaymentDetails, PaymentDirection, PaymentKind, PaymentStatus, PaymentStore,
15-
};
13+
use crate::payment::store::{PaymentDetails, PaymentDirection, PaymentKind, PaymentStatus};
1614
use crate::payment::SendingParameters;
17-
use crate::types::{ChannelManager, CustomTlvRecord, KeysManager};
15+
use crate::types::{ChannelManager, CustomTlvRecord, KeysManager, PaymentStore};
1816

1917
use lightning::ln::channelmanager::{PaymentId, RecipientOnionFields, Retry, RetryableSendFailure};
2018
use lightning::routing::router::{PaymentParameters, RouteParameters};
@@ -38,7 +36,7 @@ pub struct SpontaneousPayment {
3836
runtime: Arc<RwLock<Option<Arc<tokio::runtime::Runtime>>>>,
3937
channel_manager: Arc<ChannelManager>,
4038
keys_manager: Arc<KeysManager>,
41-
payment_store: Arc<PaymentStore<Arc<Logger>>>,
39+
payment_store: Arc<PaymentStore>,
4240
config: Arc<Config>,
4341
logger: Arc<Logger>,
4442
}
@@ -47,7 +45,7 @@ impl SpontaneousPayment {
4745
pub(crate) fn new(
4846
runtime: Arc<RwLock<Option<Arc<tokio::runtime::Runtime>>>>,
4947
channel_manager: Arc<ChannelManager>, keys_manager: Arc<KeysManager>,
50-
payment_store: Arc<PaymentStore<Arc<Logger>>>, config: Arc<Config>, logger: Arc<Logger>,
48+
payment_store: Arc<PaymentStore>, config: Arc<Config>, logger: Arc<Logger>,
5149
) -> Self {
5250
Self { runtime, channel_manager, keys_manager, payment_store, config, logger }
5351
}

0 commit comments

Comments
 (0)